Wednesday, October 6, 2010

跨数据库的SQL操作

跨数据库的SQL操作
如果只是临时访问,可以直接用openrowset
SELECT * FROM openrowset('SQLOLEDB'
 ,'10.1.1.10';'sa';'sunshine'
 ,'SELECT * FROM NJS_ERP.dbo.Ecode Where ecode = ''001''') AS a

SELECT * FROM openrowset('SQLOLEDB'
 ,'10.1.1.10';'sa';'sunshine'
 ,NJS_ERP.dbo.Ecode) AS a
/*
SELECT * INTO Temp FROM openrowset('SQLOLEDB'
 ,'10.1.1.10';'sa';'sunshine'
 ,NJS_ERP.dbo.Ecode)
SELECT * FROM Temp
*/
如果经常访问或数据量大,建议用链接服务器
用链接服务器方式一:
--创建链接服务器
EXEC sp_addlinkedserver  'srv_lnk','','SQLOLEDB','10.1.1.10'
EXEC sp_addlinkedsrvlogin 'srv_lnk', 'false', NULL, 'Sa', 'sunshine'
GO
--查询示例
SELECT * FROM srv_lnk.NJS_ERP.dbo.Ecode
--导入示例
--SELECT * INTO 表 FROM srv_lnk.数据库名.dbo.表名
GO
--处理完成后删除链接服务器
EXEC sp_dropserver 'srv_lnk','droplogins'
用链接服务器方式二:
--创建链接服务器
EXEC sp_addlinkedserver 'SERVER',N'SQL Server'
EXEC sp_addlinkedsrvlogin 'SERVER', 'false', NULL, 'Sa', 'sunshine'
GO
--查询示例
SELECT * FROM SERVER.NJS_ERP.dbo.Ecode
--导入示例
--SELECT * INTO 表 FROM srv_lnk.数据库名.dbo.表名
GO
--处理完成后删除链接服务器
EXEC sp_dropserver 'SERVER','droplogins'

No comments: