【发布时间】:2010-11-08 16:40:39
【问题描述】:
我想运行 xp_cmdshell(TSQL 过程)以挂载网络驱动器,然后访问远程 mdb 文件。
我是 MS SQL 服务器的管理员,我已允许相应地执行 xp_cmdshell。
但是,还有一个问题:
当我调用xp_cmdshell时,执行命令的用户是SQLSysAdmin,即运行SQL Server进程的账户。
我希望 xp_cmdshell 以我连接到 SQL 服务器的帐户身份执行,即 Administrator
这两个帐户都在管理员组、SQLAdmin 组中,并被授予 CONTROL SERVER。两个用户属于同一个域。所有这些都在同一台机器上运行。
由于此冲突,我无法使用网络驱动器,因为它是为 SysAdmin 而不是为 Administrator
安装的
我尝试使用 sp_ xp_ cmdshell_ proxy_ account 来指定我想要运行 xp_cmdshell 的帐户,但 SysAdmin 仍然是使用的帐户。
因此,此代码:select user_name(), suser_name;exec xp_cmdshell 'echo %username%';
显示:Administrator AdministratorSysAdmin
有人知道如何很好地模拟 xp_cmdshell 命令吗?有什么需要(重新)配置的吗?
感谢您的帮助。
【问题讨论】:
-
代理账号只在非sysadmin用户执行xp_cmdshell时使用
-
那我怎样才能强制一个特定的系统管理员用户?
-
澄清一下——你已经用sp_xp_cmd_shell_proxy_account设置了你要使用的账号,然后用xp_cmdshell执行了命令,使用的账号还是服务账号?我只是想确保我理解你的步骤。
标签: sql-server windows tsql shell