如何解决“...执行xp_cmdshell时出错“?

How to resolve "...Error occurred during the execution of xp_cmdshell"?

提问人:Brute 提问时间:6/29/2022 最后编辑:Brute 更新时间:6/30/2022 访问量:504

问:

工程师使用这个基于 Access 的应用程序从 SQL Server 2005 获取数据。

用户下载包含零件等详细信息的文件,进行修改并重新上传。上传(签入)文件时,修改日期、userId 等信息存储在 SQL Server 中。当用户尝试签入时,他们会遇到以下错误:

enter image description here

在家工作并使用远程桌面连接登录其帐户的用户是唯一面临此错误的用户。办公网络上的用户不会收到此错误。

我尝试创建一个代理帐户并向用户授予访问权限,但这不起作用。

在查询下方,我收到以下错误:

消息 156,级别 15,状态 1,第 5
行 关键字“GRANT”附近的语法不正确。

消息 102,级别 15,状态 1,第 5
行“SIDNEY\UsersWindowsLoginId”附近的语法不正确。

消息 102,级别 15,状态 1,第 9
行“UsersWindowsLoginId”附近的语法不正确

查询:

CREATE LOGIN UsersWindowsLoginId

GRANT EXECUTE ON xp_cmdshell TO 'SIDNEY\UsersWindowsLoginId';

EXEC sp_xp_cmdshell_proxy_account 'UsersWindowsLoginId'
USE master;
GRANT CONTROL SERVER TO 'UsersWindowsLoginId'

GO

此外,这似乎是最近出现的现象,因为用户已经在家工作了一段时间。

任何帮助都是值得赞赏的。谢谢!

sql-server-2005 xp-cmdshell

评论

0赞 Charlieface 6/29/2022
你为什么要首先尝试使用?T-SQL 不是通用的 scipting 语言,因此不应将其用作通用语言。Powershell、cmd 和 Python 更适合您正在执行的任何操作xp_cmdshell
0赞 Brute 6/30/2022
我什么都没做。这是 Access 应用程序引发的错误。我不使用此应用程序,我只是想解决错误
0赞 Charlieface 6/30/2022
当我说“你为什么要使用”时,你指的是编写应用程序的人,我以为是自己。我怀疑 Access 是否自行运行此类代码,因此它必须是应用程序的代码。xp_cmdshell
0赞 Brute 6/30/2022
我没有为此应用程序编写代码。这是几年前写的。我不会进入应用程序的后端并更改代码。这太冒险了
0赞 Charlieface 6/30/2022
CREATE LOGIN UsersWindowsLoginId语法不正确,在这种情况下任何情况都没有意义,您需要使用“控制面板”中的“用户帐户”选项卡在 Windows 中创建实际登录名。我也认为没有必要。net userGRANT CONTROL SERVER

答:

0赞 Aravind Aravind 6/29/2022 #1

首先为运行xp_cmdshell启用高级选项,为此需要更改 1,下面查询才能启用。试试这个

USE [DatabaseName]
GO
-- To allow advanced options to be changed.  
EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO 

谢谢和问候 阿拉文德

评论

0赞 Brute 6/30/2022
我已经这样做了,将选项更改为 1。当我这样做时,它显示“......从 1 更改为 1”