使用SQL-Server,xp_dirtree不会在某些目录中显示文件

时间:2017-07-24 12:32:24

标签: sql-server file tsql directory

运行xp_dirtree时,它似乎没有读取某些目录。

有什么建议吗?我想知道它是否是某种许可的东西?虽然我的问题被标记为另一个问题的可能重复,但这个问题对我来说是难以理解的 - 我不知道它实际上是在告诉我如何解决这个问题。

我正在运行Windows 10并使用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

1 个答案:

答案 0 :(得分:1)

我认为你不能用xp_dirtree,但你可以用xp_cmndshell轻松一点。此示例来自“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;