navy887 exec xp_cmdshell 服务器: 消息 2812,级别 16,状态 62,行 1 未能找到存储过程 'xp_cmdshell'。

时间:2021-09-06 09:12:03
exec xp_cmdshell    服务器: 消息 2812,级别 16,状态 62,行 1 未能找到存储过程 'xp_cmdshell'。

9 个解决方案

#1


那可能是这个系统存储过程考虑安全原因被删除了。

#2


开启xp_cmdshell 

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

#3


第一步执行:
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 
第二步执行:
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 

这个恢复一下试试看

#4


A. 返回可执行文件列表
下例显示执行目录命令的 xp_cmdshell 扩展存储过程。

EXEC master..xp_cmdshell 'dir *.exe'

B. 使用 Windows NT net 命令
下例显示 xp_cmdshell 在存储过程中的使用。下例先用 net send 通知用户 SQL Server 即将关闭,然后用 net pause 暂停服务器,最后用 net stop 关闭服务器。

CREATE PROC shutdown10
AS
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down 
   in 10 minutes. No more connections allowed.', no_output
EXEC xp_cmdshell 'net pause sqlserver'
WAITFOR DELAY '00:05:00'
EXEC xp_cmdshell 'net send /domain: SQL_USERS ''SQL Server shutting down 
   in 5 minutes.', no_output
WAITFOR DELAY '00:04:00'
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down 
   in 1 minute. Log off now.', no_output
WAITFOR DELAY '00:01:00'
EXEC xp_cmdshell 'net stop sqlserver', no_output

C. 不返回输出
下例使用 xp_cmdshell 执行命令字符串,且不向客户端返回输出。

USE master
EXEC xp_cmdshell 'copy c:\sqldumps\pubs.dmp \\server2\backups\sqldumps', 
   NO_OUTPUT

D. 使用返回状态
在下例中,xp_cmdshell 扩展存储过程也给出了返回状态。返回代码值存储在变量 @result 中。

DECLARE @result int
EXEC @result = xp_cmdshell 'dir *.exe'
IF (@result = 0)
   PRINT 'Success'
ELSE
   PRINT 'Failure'

E. 将变量内容写入文件
下例将当前目录内容写入当前服务器目录下名为 dir_out.txt 的文件中。

DECLARE @cmd sysname, @var sysname
SET @var = 'dir /p'
SET @cmd = 'echo ' + @var + ' > dir_out.txt'
EXEC master..xp_cmdshell @cmd


来帖一次

#5


DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'show advanced options' 从 1 改为 1。请运行 RECONFIGURE 语句以安装。
服务器: 消息 15123,级别 16,状态 1,过程 sp_configure,行 78
配置选项 'xp_cmdshell' 不存在,也可能是高级选项。
 
有效的配置选项为:

#6


常规解决SQL未能找到存储过程 'master..xp_cmdshell'
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
第二步执行:sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
但是,有时候这两个命令并不能奏效,接下来我们就用新的命令
第一步执行:
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call
*/
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO

#7


引用 3 楼 navy887 的回复:
第一步执行:
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
第二步执行:
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'

这个恢复一下试试看

这东西添加扩展存储过程?
楼主不会删除了吧

#9


我也不会。我的存储进程也找不到。为什么

#1


那可能是这个系统存储过程考虑安全原因被删除了。

#2


开启xp_cmdshell 

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

#3


第一步执行:
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 
第二步执行:
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 

这个恢复一下试试看

#4


A. 返回可执行文件列表
下例显示执行目录命令的 xp_cmdshell 扩展存储过程。

EXEC master..xp_cmdshell 'dir *.exe'

B. 使用 Windows NT net 命令
下例显示 xp_cmdshell 在存储过程中的使用。下例先用 net send 通知用户 SQL Server 即将关闭,然后用 net pause 暂停服务器,最后用 net stop 关闭服务器。

CREATE PROC shutdown10
AS
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down 
   in 10 minutes. No more connections allowed.', no_output
EXEC xp_cmdshell 'net pause sqlserver'
WAITFOR DELAY '00:05:00'
EXEC xp_cmdshell 'net send /domain: SQL_USERS ''SQL Server shutting down 
   in 5 minutes.', no_output
WAITFOR DELAY '00:04:00'
EXEC xp_cmdshell 'net send /domain:SQL_USERS ''SQL Server shutting down 
   in 1 minute. Log off now.', no_output
WAITFOR DELAY '00:01:00'
EXEC xp_cmdshell 'net stop sqlserver', no_output

C. 不返回输出
下例使用 xp_cmdshell 执行命令字符串,且不向客户端返回输出。

USE master
EXEC xp_cmdshell 'copy c:\sqldumps\pubs.dmp \\server2\backups\sqldumps', 
   NO_OUTPUT

D. 使用返回状态
在下例中,xp_cmdshell 扩展存储过程也给出了返回状态。返回代码值存储在变量 @result 中。

DECLARE @result int
EXEC @result = xp_cmdshell 'dir *.exe'
IF (@result = 0)
   PRINT 'Success'
ELSE
   PRINT 'Failure'

E. 将变量内容写入文件
下例将当前目录内容写入当前服务器目录下名为 dir_out.txt 的文件中。

DECLARE @cmd sysname, @var sysname
SET @var = 'dir /p'
SET @cmd = 'echo ' + @var + ' > dir_out.txt'
EXEC master..xp_cmdshell @cmd


来帖一次

#5


DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'show advanced options' 从 1 改为 1。请运行 RECONFIGURE 语句以安装。
服务器: 消息 15123,级别 16,状态 1,过程 sp_configure,行 78
配置选项 'xp_cmdshell' 不存在,也可能是高级选项。
 
有效的配置选项为:

#6


常规解决SQL未能找到存储过程 'master..xp_cmdshell'
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
第二步执行:sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
但是,有时候这两个命令并不能奏效,接下来我们就用新的命令
第一步执行:
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call
*/
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO

#7


引用 3 楼 navy887 的回复:
第一步执行:
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
第二步执行:
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'

这个恢复一下试试看

这东西添加扩展存储过程?
楼主不会删除了吧

#8


#9


我也不会。我的存储进程也找不到。为什么