2012-06-13 125 views
0

我需要將數據從一臺服務器上的表複製到另一臺服務器上的同一個表中。我嘗試這樣做:在服務器之間複製

sp_addlinkedserver 'server1' 

INSERT INTO [server2].[R2Op].dbo.[RefR2Ops] 
SELECT * FROM server1.[R2Op].dbo.[RefR2Ops] 

但我在第二條語句得到一個錯誤:

用戶登錄失敗'NT AUTHORITY \ ANONYMOUS登錄。

請問我可以解決這個問題嗎? 謝謝。

+0

使用一個帳戶訪問兩個服務器/地圖用戶和登錄/授予相關權限。 – Bridge

+0

是Kerberos設置?請參閱此處:http://technet.microsoft.com/en-us/library/gg723715.aspx –

+1

鏈接的服務器需要安全上下文 - 您需要指定哪個用戶連接到遠程服務器。默認爲撥打電話,而無需使用安全上下文(它使用匿名帳戶) – Charleh

回答

1

答案就在那裏。您尚未授予使用本地服務登錄遠程服務器的權利。您的命令在NT AUTHORITY \ ANONYMOUS LOGON的權限下正在默認運行。

需要specfy用戶憑據訪問鏈接服務器

sp_addlinkedsrvlogin

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' 
    [ , [ @useself = ] 'useself' ] 
    [ , [ @locallogin = ] 'locallogin' ] 
    [ , [ @rmtuser = ] 'rmtuser' ] 
    [ , [ @rmtpassword = ] 'rmtpassword' ] 
+0

我用 EXEC的sp_addlinkedserver 'server1的' EXEC sp_addlinkedsrvlogin 'server1的',真的,NULL, 'MYNAME',NULL INSERT INTO [服務器2 ] [R2Op] .dbo。[RefR2Ops] SELECT * FROM server1。[R2Op] .dbo。[RefR2Ops] 具有相同的結果... –

+0

我做錯了什麼? –

+0

你是密碼NULL嗎? etc ... –

1

如果兩個服務器都在同一個ADS域和登錄在目前兩臺服務器上,你會可能有加:

EXEC sp_addlinkedsrvlogin 'server1', 'true' 

否則,請檢查在安全上下文鏈接服務器的連接將被製成。

+0

這並沒有幫助... –

相關問題