数据库由SQL2000升级为SQL2005,再运行以前开发的程序时报错,此程序执行一存储过程,见用SQL语句拷贝文件。
程序报错,提示:
SQL Server 阻止了对组件'xp_cmdshell' 的过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'xp_cmdshell'。有关启用'xp_cmdshell' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。
解决方法:
方法一:
启动外围应用配置器工具。依次运行[开始]菜单-[程序]-[Microsoft SQL Server 2005]-[配置工具]-[SQL Server 外围应用配置器]。单击“配置外围应用”旁边的链接,选择服务器,默认值为 localhost。选择“功能的外围应用配置器”,启用'xp_cmdshell'选项打勾即可。
方法二:
用语句启用'xp_cmdshell'。运行如下的SQL语句:
sp_configure 'xp_cmdshell', 1;
go
reconfigure;
go
运行完毕,即可启用'xp_cmdshell'。
注:若要用 sp_configure 配置高级选项,必须首先在 "show advanced options" 选项设置为 1 的情况下运行 sp_configure,然后运行 RECONFIGURE:
运行下面语句后则执行成功:
sp_configure 'show advanced options', 1;
go
reconfigure;
go
---------
可通过下面语句查看高级选项
SELECT * FROM sys.configurations
ORDER BY name ;
GO
进行如上修改后,再运行程序,又出现一个错误,提示如下:
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器".
解决方法如下:
启用Ad Hoc Distributed Queries方法:
exec sp_configure 'show advanced options',1
go
reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries',1
go
reconfigure
go
关闭Ad Hoc Distributed Queries方法:
exec sp_configure 'Ad Hoc Distributed Queries',0
go
reconfigure
go
exec sp_configure 'show advanced options',0
go
reconfigure
go
启用Ad Hoc Distributed Queries后,再次运行程序,正常!