Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 对管理员用户启用的xp\u cmdshell的访问被拒绝_Sql Server_Windows_Sql Server 2008_Permissions_Xp Cmdshell - Fatal编程技术网

Sql server 对管理员用户启用的xp\u cmdshell的访问被拒绝

Sql server 对管理员用户启用的xp\u cmdshell的访问被拒绝,sql-server,windows,sql-server-2008,permissions,xp-cmdshell,Sql Server,Windows,Sql Server 2008,Permissions,Xp Cmdshell,我正在数据库触发器中使用xp_cmdshell来启动exe文件 xp_cmdshell已启用(它可以执行简单的cmd命令,如“echo”)。但当我尝试通过xp_cmdshell启动exe时,访问被拒绝 我是数据库管理员。我可以通过cmd直接启动exe。有人知道我被拒绝的原因以及如何修复吗?可能是NTFS权限不足。确保运行SQL Server的“用户帐户”对*.EXE(和任何依赖文件)具有权限(读取+执行)使用xp\u cmdshell运行“whoami”,然后检查所述用户对EXE及其访问的任何资

我正在数据库触发器中使用xp_cmdshell来启动exe文件

xp_cmdshell已启用(它可以执行简单的cmd命令,如“echo”)。但当我尝试通过xp_cmdshell启动exe时,访问被拒绝


我是数据库管理员。我可以通过cmd直接启动exe。有人知道我被拒绝的原因以及如何修复吗?

可能是NTFS权限不足。确保运行SQL Server的“用户帐户”对*.EXE(和任何依赖文件)具有权限(读取+执行)

使用xp\u cmdshell运行“whoami”,然后检查所述用户对EXE及其访问的任何资源的有效权限。 很可能像localsystem这样的帐户正被用来通过xp\u cmdshell运行进程

EXEC xp_cmdshell 'whoami'

不确定,但我相信触发器是由运行“触发”触发器的SQL命令的用户运行的

发出SQL命令的用户是Windows用户还是SQL用户?如果是SQL用户,则需要设置“SQL代理”。SQL代理用于告诉SQL将使用哪个Windows用户访问文件系统

希望这有帮助


Yves

在尝试运行BCP然后复制时,访问被拒绝

我发现xp\U cmdshell在c:\windows\system32中启动

我修改了我的CMD文件以更改为我的工作文件夹

L: cd L:\myworkingfolder


这解决了我的问题,尽管我的sqlagent是本地管理员,并且我已经完全访问了我的复制命令。

现在是时候作出贡献了。我是系统管理员,负责让两个公共访问用户执行xp\u cmdshell。我可以执行xp_cmdshell,但不能执行这两个用户

我执行了以下步骤:

  • 创建新角色:

    使用主机 创建角色[CmdShell_Executor]授权[dbo] 将xp_cmdshell上的EXEC授予[cmdshell_执行者]

  • 在主数据库中添加用户:安全-->用户。成员资格仅检查刚创建的[CmdShell_Executor]

  • 设置代理帐户:

    EXEC sp_xp_cmdshell_代理_帐户'domain\user1','users1 Windows密码' EXEC sp_xp_cmdshell_代理_帐户'domain\user2','users2 Windows密码'


  • 然后,两个用户都可以执行包含调用R脚本运行的xp_cmdshell的存储过程。我让用户输入密码,执行单行代码,然后删除密码。全部在我的电脑中。

    如果您没有正确指定可执行文件的路径,您还可以获得
    访问被拒绝。
    。注意:如果路径包含空格,则需要将可执行文件括在双引号中:

    EXEC xp_cmdshell '"D:\My path\With spaces\runme.exe"'
    

    我也有同样的问题,我这样解决:

  • 打开SQL Server配置管理器
  • 选择您的实例并右键单击->属性
  • 选择“登录”选项卡
  • 然后选择授权帐户

  • 我在自己的数据库上测试。exe是我自己创建的。“我确实有阅读和处决的权限。”约书亚。您有,但运行SQL Server(例如LocalSystem或NetworkService)的用户有吗?+1 JMC。我同意这听起来像MSSQLServer服务正在运行的服务帐户没有权限。打开服务并检查SQL Server服务帐户的登录属性。登录属性:服务器类型:数据引擎,身份验证:Windows身份验证。我如何检查用户帐户是否有exe权限?我还有一个问题,因为我的SQL Server在本地系统下运行,仍然不能出现此错误。我收到此错误。“whoami未被识别为内部或外部命令、可操作程序或批处理文件。很抱歉,您可能必须先安装它,链接到此处:我已安装了该工具。当我在cmd中执行它时,whoami工作正常。但在xp\u cmdshell中失败('whoami'未被识别为内部或外部命令)”.你知道为什么会发生这种情况吗?奇怪..你可以尝试比较cmd和xp_cmdshell之间的“set comspec”和“set path”的结果,并确保你正在连接本地服务器(如果失败,请关闭本地服务器并尝试连接)。它告诉我它是nt service\mssqlserver。它应该是谁?那是一个不允许我做任何事情的人。你得到了什么确切的错误消息?消息没有更多的细节。它没有指出它是在谈论访问存储过程还是文件系统?只是那样。存储过程工作并输出错误消息我认为是文件系统的一部分。