--远程链接 if ( not exists(select * from sys.servers where name='remotedb')) begin EXEC sp_addlinkedserver @server='remotedb',--被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.0.153' --要访问的服务器 end EXEC sp_addlinkedsrvlogin --登陆映射 'remotedb', --被访问的服务器别名 'false', NULL, 'sa', --账号 '123456' --密码 --使用:<span style="color:#000000;">若使用过程当中,提示找不到remotedb,多是由于在sql cmd窗口执行的时序问题,能够在登陆映射完了后,加一条go语句 </span> select * from remotedb.mydb.dbo.tablename exec remotedb.mydb.dbo.ProcedureName --删除登陆映射和服务器映射
Exec sp_droplinkedsrvlogin remotedb,Null --删除映射(录与连接服务器上远程登陆之间的映射)
Exec sp_dropserver remotedb --删除远程服务器连接
如下附上sp_addlinkedserver 和sp_addlinkedsrvlogin 的参数说明sql
建立一个连接的服务器,使其容许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 建立连接的服务器以后,此服务器就能够执行分布式查询。若是连接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。数据库
sp_addlinkedserver
安全
[ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name']
[ , [ @datasrc = ] 'data_source']
[ , [ @location = ] 'location']
[ , [ @provstr = ] 'provider_string']
[ , [ @catalog = ] 'catalog']
服务器
[ @server = ] 'server'分布式
要建立的连接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。ide
若是有多个 SQL Server 实例,server 能够为 servername\instancename。此连接的服务器可能会被引用为下面示例的数据源:spa
[ @srvproduct = ] 'product_name'.net
要添加为连接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。若是是 SQL Server,则不须要指定 provider_name、data_source、location、provider_string 以及目录。code
[ @provider = ] 'provider_name'orm
与此数据源相对应的 OLE DB 提供程序的惟一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是惟一的。provider_name的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。
[ @datasrc = ] 'data_source'
由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULL。data_source被看成 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。
当连接的服务器针对于 SQL Server OLE DB 提供程序建立时,能够按照 servername\instancename 的形式指定data_source,它能够用来链接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被链接到的特定 SQL Server 实例的名称。
[ @location = ] 'location'
OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULL。location做为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。
[ @provstr = ] 'provider_string'
OLE DB 提供程序特定的链接字符串,它可标识惟一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULL。Provstr 做为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。
当针对 Server OLE DB 提供程序提供了连接服务器后,可将 SERVER 关键字用做 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户链接到的特定的 SQL Server 实例名称。
[ @catalog = ] 'catalog'
创建 OLE DB 提供程序的链接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULL。catalog做为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。
建立或更新本地 Microsoft® SQL Server™ 实例上的登陆与连接服务器上远程登陆之间的映射。
sp_addlinkedsrvlogin [ @rmtsrvname = ]'rmtsrvname'
[ , [ @useself = ] 'useself']
[ , [ @locallogin = ] 'locallogin']
[ , [ @rmtuser = ] 'rmtuser']
[ , [ @rmtpassword = ] 'rmtpassword' ]
[@rmtsrvname =] 'rmtsrvname'
是应用登陆映射的连接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。
[@useself =] 'useself'
决定用于链接到远程服务器的登陆名称。useself 的数据类型为 varchar(8),默认设置为 TRUE。true 值指定 SQL Server 验证的登陆使用其本身的凭据以链接到rmtsrvname,而忽略 rmtuser 和 rmtpassword 参数。false 值指定rmtuser 和 rmtpassword 参数用来链接到特定 locallogin 的 rmtsrvname。若是rmtuser 和 rmtpassword 也设置为 NULL,则链接连接服务器不需使用任何登陆或密码。对于 Windows NT 身份验证登陆而言,useself为 true 则无效,除非 Microsoft Windows NT® 环境支持安全账户委托,而且,提供程序支持 Windows 身份验证(此时再也不须要建立值为true 的映射,不过建立仍然有效)。
[ @locallogin =] 'locallogin'
本地服务器上的登陆。locallogin 的数据类型为 sysname,默认设置为 NULL。NULL 值指定此条目将应用于全部链接到rmtsrvname 的本地登陆。若是值不为 NULL,则 locallogin 能够是一个 SQL Server 登陆或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或经过其做为已授予访问权限的组的成员来访问 SQL Server 的权限。
[@rmtuser =] 'rmtuser'
当 useself 为 false 时,用来链接 rmtsrvname的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL。
[@rmtpassword =] 'rmtpassword'
与 rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL。
0(成功)或 1(失败)