关于xp_cmdshell存储过程的网络访问权限及sp_procoption的用法

问题如下:
我想使用这个存储过程来访问局域网内其他机器的东西,比如复制。举个例子: 
我在sqlserver服务器上做了网络映射,盘符为x,网络路径://192.168.1.5/d$/test,我在查询分析器里面输入:xp_cmdshell  'dir  x:',系统返回两种情况:1,拒绝访问;2,系统找不到指定的路径 
我还是没搞明白怎么会有这两个返回,在dos下操作很正常,都可以。sqlserver服务器的ip地址为:192.168.1.6


以下为主要的解答:
exec master..xp_cmdshell 'net use //192.168.1.5/d$/test 密码 /user:192.168.1.5/administrator"
exec master..xp_cmdshell 'dir //192.168.1.5/d$/test/*'

不过上面又出现一个问题,每次计算机重启后,又要重新执行一次Net User,很不方便
解决办法:
将 xp_cmdshell 映射的那个处理写成存储过程, 并且创建在master数据库中.
然后使用sp_procoption将该存储过程设置为在sql server启动时执行就可以了.
exec sp_procoption '你的存储过程名','startup','on'

sp_procoption 用法如下所示:
sp_procoption
设置过程选项。

语法
sp_procoption [ @ProcName = ] 'procedure'
    , [ @OptionName = ] 'option'
    , [ @OptionValue = ] 'value'

参数
[@ProcName =] 'procedure'

是要为其设置或查看选项的过程名。procedure 为 nvarchar(776) 类型,无默认值。

[@OptionName =] 'option'

要设置的选项的名称。option 的唯一值是 startup,该值设置存储过程的自动执行状态。设置为自动执行的存储过程会在每次 Microsoft® SQL Server™ 启动时运行。

[ , [ @OptionValue = ] 'value' ]

表示选项是设置为开(true 或 on)还是关(false 或 off)。value 为 varchar(12) 类型,无默认值。

返回代码值
0(成功)或错误号(失败)

权限
执行权限默认授予 sysadmin 固定服务器角色的成员。启动过程必须属于 master 数据库的所有者。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值