如何使用SQL Server检查目录是否存在?

RJ.*_*RJ. 16 sql sql-server directory xp-cmdshell

我知道这个命令会创建一个目录:

EXEC master.sys.xp_create_subdir 'C:\testing\'
Run Code Online (Sandbox Code Playgroud)

但是如何检查'C:\ testing \'是否存在?

IF EXISTS(...
Run Code Online (Sandbox Code Playgroud)

Shi*_*iji 21

 CREATE TABLE ResultSet (Directory varchar(200))

 INSERT INTO ResultSet
 EXEC master.dbo.xp_subdirs 'c:\'

 Select * FROM ResultSet where Directory = 'testing'
Run Code Online (Sandbox Code Playgroud)

将返回子目录列表,然后可以检查列表的内容.

  • 我建议使用临时表,这样你最终就不会有一个静态的表.CREATE TABLE #ResultSet(目录varchar(200))INSERT INTO #ResultSet EXEC master.dbo.xp_subdirs'c:\'如果存在(选择*来自#ResultSet,其中Directory ='testing')开始#在这里做东西结束如果你需要要在代码块上多次执行此操作,请在代码的最开头创建临时表,然后在每次使用后截断它 - 稍微优化代码以避免每次重新分配. (6认同)
  • 使用下面的代码:`code` DECLARE @BackupDestination nvarchar(500)= N'C:\ testing \'; DECLARE @DirectoryExists int; EXEC master.dbo.xp_fileexist @BackupDestination,@ DirectoryExists OUT; 如果@DirectoryExists = 0 EXEC master.sys.xp_create_subdir @BackupDestination; (2认同)