Sql-Server

SQL Server 連結伺服器最佳實踐 - 循序漸進

  • December 26, 2019

您好,感謝您的光臨。我是一名偶然的 DBA,正在尋找以正確方式創建連結伺服器的指導。MS 提供了數據類型的完整描述以及 sp_addlinkedserver、sp_addlinkedsrvlogin 和 sp_serveroption 的所有各種參數的描述,但沒有關於如何將各種選項作為給定情況下的最佳實踐的指南。

我有其他 DBA 的範例,他們只使用了“sa”密碼,但我的研究表明我應該使用為他們的連結伺服器使用量身定制的登錄。問題是到目前為止我無法找到正確的組合和順序(操作順序)來正確創建所有元件和片段,從而導致連結伺服器允許兩個伺服器之間的有限通信。

目標:在源伺服器之間創建一個連結伺服器,允許源伺服器的作業步驟檢查某些條件,如果為真,則在目標伺服器上呼叫 sp_start_job。…僅此而已

根據建議,我在源和目標上創建了兩個同名/密碼的 SQL 身份驗證登錄,兩者都具有有限的“公共”權限。

我創建了連結伺服器,試圖將本地登錄映射到遠端登錄(想如果我做到了那一步,我會仔細修改目標登錄的權限以找到允許它執行 sp_start_job 的權限)。

但到目前為止,我唯一的獎勵是一系列各種類型的失敗通知。

有大量的線上文件解釋了每個不同的 proc/param 的作用,但我很難找到某種概覽來解釋 procs/params 的組合如何導致不同的預期結果。

我希望得到一些有用的建議,參考一些“尚未發現”的教程,或者甚至是關於如何實現我的目標和培養一點自尊的分步說明。(到目前為止,這項任務除了挫傷我的自我之外什麼也沒做!)

感謝您的時間。

我將首先使用 Windows Auth 和@useself='True',它將使用源伺服器的 SQL Server 代理服務帳戶進行遠端連接。如果登錄失敗,請查看目標伺服器的 SQL Server 錯誤日誌以確定要在目標伺服器上創建登錄的 Windows 主體。因此,連結伺服器定義將類似於:

USE [master]
GO

EXEC sp_addlinkedserver @server = N'TargetServer', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'targetserver.mydomain.com'

EXEC sp_addlinkedsrvlogin @rmtsrvname=N'TargetServer',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO

EXEC sp_serveroption @server=N'TargetServer', @optname=N'collation compatible', @optvalue=N'true'
GO

EXEC sp_serveroption @server=N'TargetServer', @optname=N'data access', @optvalue=N'true'
GO

EXEC sp_serveroption @server=N'TargetServer', @optname=N'rpc out', @optvalue=N'true'
GO

EXEC sp_serveroption @server=N'TargetServer', @optname=N'remote proc transaction promotion', @optvalue=N'false'
GO

對於定義連結伺服器的 SQL Server 的遠端連接,模擬呼叫者更加複雜,因為您必須正確配置Kerberos 約束委派。但是當從 SQL 代理作業中使用時,它不是“雙跳”,因此是一個非常簡單的配置。

引用自:https://dba.stackexchange.com/questions/256243