sp_addlinkedsrvlogin (Transact-SQL)
更新: 2005 年 12 月 5 日
建立或更新 SQL Server 本機執行個體登入與遠端伺服器安全性帳戶之間的對應。
語法
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
[ , [ @useself = ] 'TRUE' | 'FALSE' | 'NULL']
[ , [ @locallogin = ] 'locallogin' ]
[ , [ @rmtuser = ] 'rmtuser' ]
[ , [ @rmtpassword = ] 'rmtpassword' ]
引數
- [ @rmtsrvname = ] 'rmtsrvname'
這是登入對應所套用的連結伺服器名稱。rmtsrvname 是 sysname,沒有預設值。
[ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
模擬本機登入或明確提交登入和密碼,以決定是否連接到 rmtsrvname。資料類型是 varchar(8),預設值是 TRUE。TRUE 值指定登入使用其認證來連接 rmtsrvname,而忽略 rmtuser 和 rmtpassword 引數。FALSE 指定 rmtuser 和 rmtpassword 引數用來連接指定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也設成 NULL,則連接連結伺服器不用登入和密碼。
- [ @locallogin = ] 'locallogin'
這是本機伺服器上的登入。locallogin 是 sysname,預設值是 NULL。NULL 指定這個項目適用於所有連接 rmtsrvname 的本機登入。如果不是 NULL,locallogin 可以是 SQL Server 登入或 Windows 登入。必須以直接方式或透過其被授與存取權限之 Windows 群組的成員資格,來授與 Windows 登入存取 SQL Server 的權限。
- [ @rmtuser = ] 'rmtuser'
這是當 @useself 是 FALSE 時,用來連接 rmtsrvname 的遠端登入。當遠端伺服器為不使用 Windows 驗證的 SQL Server 執行個體時,rmtuser 是 SQL Server 登入。rmtuser 是 sysname,預設值是 NULL。
- [ @rmtpassword = ] 'rmtpassword'
這是與 rmtuser 相關聯的密碼。rmtpassword 是 sysname,預設值是 NULL。
傳回碼值
0 (成功) 或 1 (失敗)
備註
當使用者登入本機伺服器並執行存取連結伺服器資料表的分散式查詢時,本機伺服器必須代表使用者登入連結伺服器來存取該資料表。使用 sp_addlinkedsrvlogin 來指定本機伺服器用來登入連結伺服器的登入認證。
藉由執行 sp_addlinkedserver,自動在本機伺服器的所有登入及連結伺服器的遠端登入之間建立預設對應。預設對應指出代表登入連接連結伺服器時,SQL Server 會使用本機登入的使用者認證。這相當於為連結的伺服器將 @useself 設成 true 執行 sp_addlinkedsrvlogin,而不指定本機使用者名稱。sp_addlinkedsrvlogin 僅適用於變更預設對應或新增特定本機登入的對應。若要刪除預設對應或任何其他對應,請使用 sp_droplinkedsrvlogin。
SQL Server 並不需要使用 sp_addlinkedsrvlogin 來建立預定的登入對應,而是在下列所有條件都存在時,可以自動利用發出查詢之使用者的 Windows 安全性認證 (Windows 使用者名稱及密碼) 來連接連結伺服器:
- 使用者利用 Windows 驗證模式連接 SQL Server。
- 用戶端及傳送伺服器具有安全性帳戶委派。
- 提供者支援 Windows 驗證模式;例如,在 Windows 執行的 SQL Server。
附註: |
---|
不需要為單躍點狀況啟用委派,但是多躍點狀況則必須啟用委派。 |
在連結伺服器利用於 SQL Server 本機執行個體執行 sp_addlinkedsrvlogin 所定義的對應來執行驗證之後,遠端資料庫的個別物件權限是由連結伺服器所決定,而非本機伺服器。
sp_addlinkedsrvlogin 無法在使用者自訂交易內執行。
權限
需要伺服器的 ALTER ANY LOGIN 權限。
範例
A. 利用本身的使用者認證將所有本機登入連接連結伺服器
下列範例建立對應來確保所有本機伺服器的登入,是利用本身的使用者認證來連接連結伺服器 Accounts
。
EXEC sp_addlinkedsrvlogin 'Accounts'
或
EXEC sp_addlinkedsrvlogin 'Accounts', 'true'
附註: |
---|
如果有為個別登入建立的明確對應,這些對應優先於該連結伺服器可能存在的任何全域對應。 |
B. 使用不同的使用者認證,將特定的登入連接到連結伺服器
下列範例會建立對應,以確保 Windows 使用者 Domain\Mary
利用登入 MaryP
和密碼 d89q3w4u
,來連接連結伺服器 Accounts
。
EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u'
安全性注意事項: |
---|
這個範例不使用 Windows 驗證。密碼會以未經加密的方式傳輸。在儲存於磁碟的資料來源定義和指令碼中、備份中和記錄檔中,可能看得見密碼。請勿在這種連接中使用管理員密碼。如需您環境的特定安全性指引,請洽詢網路管理員。 |
請參閱
參考
分散式查詢預存程序 (Transact-SQL)
連結伺服器目錄檢視 (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL)
系統預存程序 (Transact-SQL)