--遠程鏈接 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(失敗)