从存储过程调用xp_cmdshell

时间:2012-10-09 13:01:38

标签: sql sql-server sql-server-2000 xp-cmdshell

作为概念验证,我们尝试在现有解决方案中插入xp_cmdshell命令。目前,应用程序在我们的数据库服务器上调用存储过程,当配置文件看起来像:

   declare @P1 int
   set @P1=1
   exec Name_Of_The_SP @param1 = 3, @param2 = 'blah', @parametc = 'blahetc', @ID = P1 output
   select @P1

SP基本上打开一个事务,插入一行,然后提交。在此我们添加了:

exec master..xp_cmdshell 'dir > c:\test.txt'

然后,当我们在SSMS查询窗口中运行第一个代码块时,将按预期在服务器上生成文件。但是当我们使用应用程序来调用它时,行正常插入但不生成文件?

SQL Server和SQLAgent用户是本地管理员和系统管理员,因此无法在那里看到任何问题。试图让应用程序用户成为本地管理员,但无济于事,它已经是一个系统管理员。

这是SQL Server 2000

1 个答案:

答案 0 :(得分:-1)

我们设法解决了这个问题 - 我们(我)在剖析器中忽略了该执行官是以不同的登录方式进入的。授予master.dbo.xp_cmdshell执行权限,使其正常工作。向任何花费任何时间/精力的人致歉!