6月 28

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;

关闭一样.只是将上面的后面的那个"1"改成"0"就可以了.

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

在 服务器对象–>链接服务器
新建一个访问点

假设要将远程数据库上的数据导入到本地数据库
在本地执行SQL
   

INSERT into 本地表名 SELECT * FROM [远程名].远程库名.dbo.远程表名

将本地SQL Server 的数据导出到 Excel

EXEC master..xp_cmdshell 'bcp 本地库名.dbo.本地表明 out D:\Temp.xls -c -q -S"本地服务器名" -U"sa" -P"密码"'

将本地SQL Server 的数据导出到 Txt

EXEC master..xp_cmdshell 'bcp 本地库名.dbo.本地表明 out D:\Temp.txt -c -q -S"本地服务器名" -U"sa" -P"密码"'

 

帮同事写了一个存储过程版的,先导入到一个临时表里

DROP TABLE _TempTable;

CREATE TABLE _TempTable (
	Id INT,
	UserName nvarchar (100)
);

INSERT INTO _TempTable EXEC GetTestDataByAge "xxx";

EXEC master..xp_cmdshell 'bcp DB_Testing.dbo._TempTable out D:\test\Temp.txt -c -q -S"172.28.3.20" -Usa -Pabc123'

GetTestDataByAge的定义,随便写的一个

ALTER PROCEDURE [dbo].[GetTestDataByAge] 
(@Age VARCHAR(10)) 
AS 
SELECT
	Id,
	UserName
FROM
	tb_testingdata

written by ocean \\ tags: ,