2017-07-24 1 views
0

Lors de l'exécution de xp_dirtree, il ne semble pas lire certains répertoires.En utilisant SQL-Server, xp_dirtree n'affiche pas les fichiers dans certains répertoires

Des suggestions? Je me demande si c'est une sorte de permission genre de chose? Tandis que ma question a été signalée comme une copie possible d'une autre question, cette question est indéchiffrable pour moi - je n'ai aucune idée de ce qu'il me dit de faire pour régler le problème.

Je suis sous Windows 10 et en utilisant Microsoft SQL Server 2014

USE MyDatabase; 

DECLARE @files TABLE (FileName varchar(max), depth int, IsFile int) 


--INSERT INTO @files EXEC xp_dirtree 'C:\', 1,1  -- works 
--INSERT INTO @files EXEC xp_dirtree 'C:\Temp' , 1,1 -- does not list anything 

--INSERT INTO @files EXEC xp_dirtree 'C:\Users' , 1,1   --works 
--INSERT INTO @files EXEC xp_dirtree 'C:\Users\Default' , 1,1 --Works 
--INSERT INTO @files EXEC xp_dirtree 'C:\Program Files\Microsoft SQL Server\', 1,1 --works 
--INSERT INTO @files EXEC xp_dirtree 'C:\Users\Donald' , 1,1 --Does not list anything 
+0

Il est presque certainement un problème d'autorisations étant donné les dossiers que vous ne pouvez pas accéder, mais je n'ai pas une solution pour vous. J'ai juste essayé d'ajouter un compte d'admin de domaine en tant qu'utilisateur et ai créé un proc WITH EXECUTE AS ThatUser et il ne pouvait toujours pas voir les articles dans le dossier de temp. –

+0

Il n'est pas du tout clair pour moi * comment * (ou quel) compte que je dois ajouter. – user918967

Répondre

0

Je ne pense pas que vous pouvez avec xp_dirtree, mais vous pouvez avec xp_cmndshell avec un peu d'effort. Cet exemple est le blog « SQL Journey »:

DECLARE @FileList TABLE(FileNumber INT IDENTITY, FileName VARCHAR(256)) 

DECLARE @path VARCHAR(256) = 'dir c:\Temp' 
DECLARE @Command varchar(1024) = @Path + ' /A-D /B' 

INSERT INTO @FileList 
EXEC master.dbo.xp_cmdshell @Command 

SELECT * 
FROM @FileList; 
+0

Ne semble pas fonctionner. Voici l'erreur "La référence à la base de données et/ou au nom du serveur dans" master.dbo.xp_cmdshell "n'est pas prise en charge dans cette version de SQL Server." J'utilise SQL Server 2014 – user918967

+0

Gotcha - il est désactivé par défaut, donc vous devrez l'activer: https://stackoverflow.com/questions/14550024/why-doesnt-xp-cmdshell-work-in-sql-server- 2012 –