尝试从存储过程中执行xp_cmdshell时,我看到一条错误消息.
在实例上启用了xp_cmdshell .和执行权限被授予给我的用户,但我还是看到了异常.
对象'xp_cmdshell',数据库'mssqlsystemresource',架构'sys'上的EXECUTE权限被拒绝
部分问题是这是一个共享集群,我们在实例上有一个数据库,因此我们没有完整的管理员权限.所以我不能进入并授予权限,什么不是.
抱歉标题不好 - 我想不出更好的标题.
从本质上讲,SQL Server 2008正在处理我希望失败的子查询.
这是一个简单的例子:
CREATE TABLE UserDemographics
(
UserID INT,
UserName NVARCHAR(500)
)
CREATE TABLE UserAddresses
(
UserAddressID INT,
Address NVARCHAR(500)
)
INSERT INTO UserDemographics(UserID, UserName) VALUES(1, 'Joe'), (2, 'Sam'), (3, 'Ed')
INSERT INTO UserAddresses(UserAddressID, Address) VALUES(1, '1st Street'), (2, 'Old Address 1'), (3, 'Old Address 2')
DELETE FROM UserDemographics
WHERE UserID IN
(
SELECT UserID FROM UserAddresses
)
Run Code Online (Sandbox Code Playgroud)
这就是为什么这很有趣:UserAddresses没有一个名为的列UserID.相关子查询正在选择它正在查询的表中不存在的列.
显然,它与相关子查询有关 - UserID是UserDemographics表中的一列,由于某种原因,数据库正在进行该引用.
也许该UserDemographics表隐含在子查询的from-list中.
有谁能解释一下?