創(chuàng)建或更新本地 Microsoft® SQL Server™ 實例上的登錄與鏈接服務器上遠程登錄之間的映射。
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
[ , [ @useself = ] 'useself' ]
[ , [ @locallogin = ] 'locallogin' ]
[ , [ @rmtuser = ] 'rmtuser' ]
[ , [ @rmtpassword = ] 'rmtpassword' ]
[@rmtsrvname =] 'rmtsrvname'
是應用登錄映射的鏈接服務器名稱。rmtsrvname 的數(shù)據(jù)類型為 sysname,沒有默認設置。
[@useself =] 'useself'
決定用于連接到遠程服務器的登錄名稱。useself 的數(shù)據(jù)類型為 varchar(8),默認設置為 TRUE。true 值指定 SQL Server 驗證的登錄使用其自己的憑據(jù)以連接到 rmtsrvname,而忽略 rmtuser 和 rmtpassword 參數(shù)。false 值指定 rmtuser 和 rmtpassword 參數(shù)用來連接到特定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也設置為 NULL,則連接鏈接服務器不需使用任何登錄或密碼。對于 Windows NT 身份驗證登錄而言,useself 為 true 則無效,除非 Microsoft Windows NT® 環(huán)境支持安全帳戶委托,并且,提供程序支持 Windows 身份驗證(此時不再需要創(chuàng)建值為 true 的映射,不過創(chuàng)建仍然有效)。
[ @locallogin =] 'locallogin'
本地服務器上的登錄。locallogin 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。NULL 值指定此條目將應用于所有連接到 rmtsrvname 的本地登錄。如果值不為 NULL,則 locallogin 可以是一個 SQL Server 登錄或 Windows NT 用戶。必須授予 Windows NT 用戶直接訪問 SQL Server 或通過其作為已授予訪問權限的組的成員來訪問 SQL Server 的權限。
[@rmtuser =] 'rmtuser'
當 useself 為 false 時,用來連接 rmtsrvname 的用戶名,rmtuser 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。
[@rmtpassword =] 'rmtpassword'
與 rmtuser 相關的密碼。rmtpassword 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。
0(成功)或 1(失?。?/P>
當用戶登錄到本地服務器并執(zhí)行分布式查詢,以訪問鏈接服務器上的表時,本地服務器必須登錄鏈接服務器上,代表該用戶訪問該表。使用 sp_addlinkedsrvlogin 來指定本地服務器登錄鏈接服務器的登錄憑據(jù)。
本地服務器上所有登錄和鏈接服務器上的遠程登錄之間的默認映射通過執(zhí)行 sp_addlinkedserver 自動創(chuàng)建。默認映射說明連接到鏈接服務器代表的登錄時,SQL Server 使用本地登錄的用戶憑據(jù)(等同于將鏈接服務器的 @useself 設置為 true 時執(zhí)行 sp_addlinkedsrvlogin)。使用 sp_addlinkedsrvlogin 只可以更改特定的本地服務器的默認映射或添加新映射。若要刪除默認映射或任何其它映射,請使用 sp_droplinkedsrvlogin。
當所有下列條件存在時,SQL Server 可以自動地使用正在發(fā)出查詢的用戶的 Windows NT 安全憑據(jù)(Windows NT 用戶名稱和密碼),以連接到鏈接服務器,而不是必須使用 sp_addlinkedsrvlogin 創(chuàng)建一個預設的登錄映射。
使用映射(此映射通過在本地 SQL Server 上執(zhí)行 sp_addlinkedsrvlogin 定義)的鏈接服務器執(zhí)行身份驗證后,遠程數(shù)據(jù)庫中單獨對象的權限由鏈接服務器決定,而不是由本地服務器決定。
不能從用戶定義的事務中執(zhí)行 sp_addlinkedsrvlogin。
只有 sysadmin 和 securityadmin 固定服務器角色的成員才可以執(zhí)行 sp_addlinkedsrvlogin。
此示例創(chuàng)建一個映射,以確保所有到本地服務器的登錄都使用其各自的用戶憑據(jù)連接到鏈接服務器 Accounts。
EXEC sp_addlinkedsrvlogin 'Accounts'
或
EXEC sp_addlinkedsrvlogin 'Accounts', 'true'
此示例創(chuàng)建一個映射,以確保所有到本地服務器的登錄都使用相同的登錄 SQLUser 和密碼 Password 連接到鏈接服務器 Accounts。
EXEC sp_addlinkedsrvlogin 'Accounts', 'false', NULL, 'SQLUser', 'Password'
此示例創(chuàng)建一個映射,以確保所有到本地服務器的登錄都連接到鏈接服務器 mydb,而不使用登錄或密碼(mydb 不需要登錄或密碼)。
EXEC sp_addlinkedsrvlogin 'mydb', 'false', NULL, NULL, NULL
-或-
EXEC sp_addlinkedsrvlogin 'mydb', 'false'
此示例創(chuàng)建一個映射,以確保只有 Windows NT 用戶 Domain\Mary 使用登錄 MaryP 和密碼 NewPassword 連接到鏈接服務器 Accounts。
EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'NewPassword'
此示例首先創(chuàng)建一個名為 ExcelSource 的鏈接服務器,定義為 Microsoft Excel 電子表格 DistExcl.xls,然后創(chuàng)建一個映射以允許 SQL Server 登錄 sa 使用 Excel 登錄 Admin 連接到 ExcelSource,并且沒有密碼。
EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0'
GO
EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', 'sa', 'Admin', NULL
相關文章