执行批处理文件以使用xp_cmdshell创建测试文件 - 结果不同

时间:2013-06-22 20:10:33

标签: sql-server-2008 batch-file dos

我正在尝试使用xp_cmdshell在SQL Server 2008 Express中执行批处理文件。如果我用它来执行包含以下命令的批处理文件:

echo> C:\ development \ test \ itworks.txt

创建一个名为“itworks.txt”的文件,在其中文本显示“ECHO is on”。 但是,如果我运行包含命令的批处理文件:

CD。 > test1.txt的

它不起作用(没有错误,只是没有创建) 并且都没有:

类型NUL>的test2.txt

虽然如果从命令提示符双击/运行,这两个批处理文件都会创建该文件。我认为这可能是一个权限错误(我当时没有尝试过echo命令),所以更改了文件权限,以便NTAuthority(这是SQLServer服务运行的那个)完全控制文件夹,但它仍然没有'工作。事件日志中没有任何内容。我是DOS命令的新手,所以我真的不明白不同的命令。有谁知道可能会发生什么?

1 个答案:

答案 0 :(得分:2)

如果直接在命令提示符下测试命令,则它们可以正常工作。 cd语句生成一个包含当前目录名称的文本文件; type语句生成一个零字节文件,但它确实生成了一个文件。

最有可能的是,xp_cmdshell正在其运行的帐户没有写权限的文件夹中执行,并且您没有为要写入的文件指定其他位置。 (有效的echo语句指定文本文件的文件夹位置,而其他两个则不指定。)

将批处理文件更改为:

cd > C:\development\test\test1.txt 

type NUL > C:\development\test\test1.txt 

如果echo语句在xp_cmdshell运行时有效,则您知道它可由NTAuthority帐户写入。