2016-02-24 45 views
2

爲什麼不詢問dba.stackexchange:描述說明它是專業人士,我不是,其「爲愛好者」的一部分。用戶'NT AUTHORITY ANONYMOUS LOGON'的登錄失敗 - MS SQL Server - 無法解決問題的可能性

我有一個錯誤 「登錄失敗,用戶NT AUTHORITY \ ANONYMOUS登錄」

這是幾個可能的原因和解決方案的常見錯誤。問題是我不知道數據庫和服務器管理以及證書認證主題,因此我需要花一些時間來理解正在說的和建議的內容。 在我這樣做之前,我想問問是否可能由於技術限制而無法解決問題。我現在將更詳細地描述情況。

有一個MS SQL Server A與數據庫Adb和表dbo.At.我可以從中讀取。還有一個MS SQL Server B.我可以在這裏讀寫。

我在我的電腦上打開了MS SQL Server Management Studio 2012。我有一個打開與查詢「select * from Adb.dbo.At」,它工作得很好的服務器連接。該連接使用Windows身份驗證。 我與服務器B(Windows身份驗證以及)連接與查詢「選擇*從A.Adb.dbo.At」導致上述錯誤。

在這一點上我有閱讀權限的A,我有讀寫權限B.我可以從A導出數據,然後使用我的電腦將它導入B,即我可以做一種複製粘貼我最終會得到我想要的。這兩臺服務器之間沒有不可逾越的隔牆,我是中間人。我只是想讓它更容易。在我討論SPN,代理團隊,Kerberos,活動目錄之前,我想問一下,假設我除了閱讀A並閱讀B上的內容之外沒有其他的東西,我可能無法解決這個問題?

+0

在哪一點你有這個錯誤? – bmsqldev

+0

當我執行「從A.Adb.dbo.At選擇*從連接到服務器B的級別」。 – zaptask

+0

我認爲服務器B已經添加爲服務器A的鏈接服務器。因此,嘗試查看服務器的鏈接服務器A(對象資源管理器 - >服務器對象 - >鏈接服務器 - >服務器B->屬性 - >安全性)。你可能需要從那裏調試登錄問題 – bmsqldev

回答

1

看來我有一個「雙跳」問題。

https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/

我已經找到了解決辦法。我可以在服務器B上使用服務器代理。使用這個我可以使用服務器執行一些操作,例如查詢其他服務器。代理作業屬於特定類型(如T-SQL腳本)。對於特定的作業類型,代理可以以「run as」模式運行作業(需要代理)。我創建了一個代表我的正常Windows登錄的代理。可悲的是,T-SQL腳本類型作業不能在「run as」模式下執行。但是PowerShell類型的作業可以。 PowerShell也可以執行SQL語句。因此我創建了運行代理的PowerShell作業,命令如下:

SQLCMD -Q "select * into Bdb.dbo.Bt from A.dbA.dbo.At" -E 

這解決了我的問題。

相關問題