Por favor, perdoe minha frustração, mas as permissões de acesso a arquivos do Windows são realmente muito ruins:
No SQL Server Management Studio, usei um procedimento armazenado para criar um arquivo de rastreamento, algo como:
DECLARE @TraceID INT;
DECLARE @MaxFileSize BIGINT = 50; -- File size limit in MB
DECLARE @TraceFilePath NVARCHAR(256) = N'C:\SQLTraces\Trace_OrderPart'; -- Base trace file path
-- Step 1: Create a new trace
EXEC sp_trace_create
@traceid = @TraceID OUTPUT,
@options = 2, -- File rollover enabled
@tracefile = @TraceFilePath,
@maxfilesize = @MaxFileSize,
@stoptime = NULL; -- No automatic stop
...
-- Step 4: Start the trace
EXEC sp_trace_setstatus @TraceID, 1; -- Start the trace
Isso de fato criou alguns supostos *.trc
arquivos, mas quando tento abri-los usando o SQL Server Profiler (veja SSMS, menu "Ferramentas"), é isso que obtenho:
Você pode pensar: "Sem problemas". Apenas copie o arquivo em outro lugar e abra-o lá. Isso, no entanto, não funciona, então estou tentando modificar o acesso ao arquivo do diretório: Eu começo com isto:
Desmarco a caixa de seleção e clico em "Aplicar alterações a esta pasta, subpastas e arquivos", concedo direitos de administrador, ele faz todo o trabalho e, no final, quando clico no diretório novamente, isto é (novamente) o que obtenho:
Tentei forçar usando um WSL, mas também não funcionou:
"Quem tem acesso a este diretório e que tipo de acesso?"
Prompt>/mnt/c$ ls -ltra | grep "SQLTrace"
drwxrwxrwx 1 scampsd scampsd 4096 Dec 2 14:40 SQLTraces
=> "scampsd" tem acesso total.
Quem sou eu?
Prompt>/mnt/c$ cd ~
Prompt>~$ pwd
/home/scampsd
=> EU SOU "scampsd".
O que posso fazer para forçar o acesso a esse diretório?
As permissões de acesso não são controladas pela
Read Only
caixa de seleção; elas são controladas pelaSecurity
aba (ou pelaicacls.exe
ferramenta). Abra "Segurança > Editar..." e adicione você mesmo com direitos Modificar ou superiores, ou execute:O
(M)
representa o grupo de permissões "Modificar", e os(OI)(CI)
sinalizadores fazem com que a entrada seja herdada automaticamente por todos os arquivos e subpastas (portanto, geralmente não é necessária uma alteração recursiva explícita).O proxy do sistema de arquivos WSL é executado sob sua própria conta do Windows e só tem o mesmo acesso que você. Ao contrário de, por exemplo, Interix (ou talvez WSL1, eu acho?), o interior da VM WSL2 existe como seu próprio mundo com seus próprios UIDs e tal (e toda a VM WSL2 está em seu controle total – por exemplo, o disco da VM é armazenado em seu perfil de usuário), então todas as comunicações com o host também precisam ser executadas sob sua conta, para evitar que seja abusado como um bypass de controle de acesso trivial.
As permissões de arquivo mostradas para /mnt/c no WSL não têm sentido; não há tradução feita de ACLs NTFS para ACLs Linux. Seria uma tradução com muitas perdas devido a várias semânticas incompatíveis, de qualquer forma; mesmo se você tivesse usado
getfacl
em vez dels -l
, algumas coisas como herança ou as 10+ permissões refinadas não podem ser expressas por meio de "ACLs de rascunho POSIX" que o Linux implementa. (Alguns sistemas do tipo Unix implementam ACLs NFSv4 que são 95% iguais às do Windows, o Linux infelizmente não.)