SQLSERVER跨数据库操作 ---- sp_addlinkedserver

时间:2022-11-05 22:14:14

由于项目需要跨数据库进行相应的sql操作(这里遇到的是sqlserver的A库,到sqlserver的B库)

sp_addlinkedserver [ @server = ] ' server '
[ , [ @srvproduct = ] ' product_name ' ]
[ , [ @provider = ] ' provider_name ' ]
[ , [ @datasrc = ] ' data_source ' ]
[ , [ @location = ] ' location ' ]
[ , [ @provstr = ] ' provider_string ' ]
[ , [ @catalog = ] ' catalog ' ]

//创建linkServer(注册链接服务)
-- exec sp_addlinkedserver '所创建链接的ID,可以随意起', 'product_name,这里为null', 'provider_name,我这里使用SQLOLEDB', '服务器名称/IP地址/文件的完整路径'
exec sp_addlinkedserver 'my_link', '', 'SQLOLEDB', '127.0.0.1'

//登陆linkServer
-- exec sp_addlinkedsrvlogin '注册的链接服务ID','false',null,'用户名','密码'
exec sp_addlinkedsrvlogin 'my_link', 'false', null, 'sa', '1234'

//使用链接服务进行数据查询
-- select * from 链接服务ID.数据库名称.所查表所在用户.表名
select * from my_link.dbo.t_myTable;

[ @srvproduct = ] 'product_name'
要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128) ,默认设置为 NULL。如果是 SQL Server ,则不需要指定 provider_name 、data_source 、location 、provider_string 以及目录。

[ @provider = ] 'provider_name'
根据需要链接的不同的数据库填写不同的参数
sqlserver              == SQLOLEDB
oracle                   == MSDAORA
Access/Jet             == Microsoft.Jet.OLEDB.4.0
ODBC                   == MSDASQL
文件系统                 == MSIDXS
Microsoft Excel      == Microsoft.Jet.OLEDB.4.0
IBM DB2               == DB2OLEDB