【发布时间】:2012-10-09 13:01:37
【问题描述】:
作为概念证明,我们尝试将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
【问题讨论】:
-
对于迁移故障的选民,我认为他们不会非常欣赏这个问题,因为这并不是他们在常见问题解答中所说的“以专业身份管理计算机系统”。
-
SQL 2000 中有
sp_xp_cmdshell_proxy_account吗? -
Podiluska,我希望这是作为 master 下的扩展程序吗?如果是这样,它不存在在那里。使用企业管理器,我确实确定了一个代理,使其成为系统管理员和本地管理员(纯粹作为测试),它仍然以问题中概述的方式执行。
标签: sql sql-server sql-server-2000 xp-cmdshell