为安全考滤,安装之后会把一些内置的存储过程去掉了。
use master
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_dropextendedproc 'sp_oacreate'
exec sp_dropextendedproc 'sp_oadestroy'
exec sp_dropextendedproc 'sp_oagetproperty'
exec sp_dropextendedproc 'sp_oamethod'
exec sp_dropextendedproc 'sp_oasetproperty'
exec sp_dropextendedproc 'sp_oastop'
exec sp_dropextendedproc 'xp_regaddmultistring'
exec sp_dropextendedproc 'xp_regdeletekey'
exec sp_dropextendedproc 'xp_regdeletevalue'
exec sp_dropextendedproc 'xp_regenumvalues'
exec sp_dropextendedproc 'xp_regread'
exec sp_dropextendedproc 'xp_regremovemultistring'
exec sp_dropextendedproc 'xp_regwrite'
结果, SQLSERVER代理起不过来。
Microsoft SQL-DMO (ODBC SQLState: 42000)
---------------------------
错误 22002: RegCreateKeyEx() 返回错误 5,“拒绝访问。”
怎么把它们加回去呢??
======================================
sp_helpextendedproc
显示当前定义的扩展存储过程,以及此过程(函数)所属动态链接库的名称。也就是要找到对应的DLL
再
sp_addextendedproc
将新扩展存储过程的名称注册到 Microsoft? SQL Server? 上。
语法
sp_addextendedproc [ @functname = ] 'procedure' ,
[ @dllname = ] 'dll'
参数
[ @functname = ] 'procedure'
在动态链接库 (DLL) 内调用的函数名称。procedure 的数据类型为 nvarchar(517),没有默认设置。procedure 能够可选地包含 owner.function 形式的所有者名称。
[ @dllname = ] 'dll'
包含该函数的 DLL 名称。dll 的数据类型为 varchar(255),没有默认设置。
返回代码值
0(成功)或 1(失败)
结果集
无
注释
使用 Microsoft Open Data Services 的程序员可以创建扩展存储过程。创建扩展存储过程后,必须使用 sp_addextendedproc 将此存储过程添加到 SQL Server 上。有关更多信息,请参见创建扩展存储过程。
只将一个扩展存储过程添加到 master 数据库中。若要从非 master 的数据库中执行扩展存储过程,请用 master 限定扩展存储过程的名称。
sp_addextendedproc 将条目添加到 sysobjects 中,用 SQL Server 注册新扩展存储过程名称。同样在 syscomments 表中添加一个条目。
权限
只有 sysadmin 固定服务器角色的成员才可以执行 sp_addextendedproc。
解决
exec sp_addextendedproc 'sp_oacreate' ,'odsole70.dll'
exec sp_addextendedproc 'sp_oadestroy', 'odsole70.dll'
exec sp_addextendedproc 'sp_oagetproperty', 'odsole70.dll'
exec sp_addextendedproc 'sp_oamethod', 'odsole70.dll'
exec sp_addextendedproc 'sp_oasetproperty', 'odsole70.dll'
exec sp_addextendedproc 'sp_oastop', 'odsole70.dll'
exec sp_addextendedproc 'xp_regaddmultistring', 'xpstar.dll'
exec sp_addextendedproc 'xp_regdeletekey', 'xpstar.dll'
exec sp_addextendedproc 'xp_regdeletevalue', 'xpstar.dll'
exec sp_addextendedproc 'xp_regenumvalues', 'xpstar.dll'
exec sp_addextendedproc 'xp_regread', 'xpstar.dll'
exec sp_addextendedproc 'xp_regremovemultistring', 'xpstar.dll'
exec sp_addextendedproc 'xp_regwrite', 'xpstar.dll'