1

作为概念证明,我们尝试将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

4

1 回答 1

-1

我们设法弄清楚了这一点——我们(我)在分析器中忽略了执行官正在以不同的登录名进入。授予 master.dbo.xp_cmdshell 执行权限专门让它工作。向为此花费任何时间/精力的任何人道歉!

于 2012-10-09T14:03:14.043 回答