簡體   English   中英

在T-SQL中連接到遠程服務器(SQL server 2008)

[英]Connect to remote server in T-SQL (SQL server 2008)

有沒有人有一個存儲過程的例子,它連接到遠程服務器?

我一直在網上搜索,到目前為止發現它可以使用sp_addlinkedserversp_addlinkedsrvlogin完成,但我沒有找到一個很好的例子,我不太了解文檔。

更新:

這兩個第一個回復都沒有幫助我,我能得到的最接近的是:

EXEC sp_addlinkedserver 
    @server = 'SiminnSrv', 
    @provider = 'SQLNCLI',
    @catalog = 'devel',
    @srvproduct = '',
    @provstr = 'DRIVER={SQL Server};SERVER=my.serveradr.com;UID=my_user_name;PWD=my_pass_word;'

這實際上讓我連接,但當我查詢表時,我收到此消息:

用戶'(null)'登錄失敗。 原因:與受信任的SQL Server>連接無關。

基本上,您將鏈接服務器創建到其他服務器,然后提供用於對該鏈接服務器的SQL調用的登錄憑據。 例如,這將使用用戶名和密碼“DomainUserName”,“DomainPassword”的DomainAccount連接到“MyOtherServer”

EXEC sp_addlinkedserver 'MyOtherServer', N'SQL Server'


EXEC sp_addlinkedsrvlogin 
   'MyOtherServer', 
   'false', 
   'OtherServerDomain\DomainUser', 
   'DomainUserName', 
   'DomainPassword'

更多信息在這里這里

我設法使用“SQL Server Native Client 10”( SQLNCLI10 )通過鏈接服務器連接到MSSQL Server 2008,但我不得不使用sp_addlinkedsrvlogin而不是@provstr來提供連接詳細信息。 這基於本文中的示例:

EXEC master.dbo.sp_addlinkedserver 
    @server = 'MyServerConnection',
    @srvproduct = '', 
    @datasrc = 'SERVERNAME\INSTANCENAME',
    @provider = 'SQLNCLI10', 
    @provstr = ''

EXEC sp_addlinkedsrvlogin
    @rmtsrvname = 'MyServerConnection',
    @useself = 'false',
    --@locallogin = 'someLocalUser' -- Use to restrict the connection to specific login
    @rmtuser = 'remoteUser',
    @rmtpassword = 'secret'

查詢此鏈接服務器:

SELECT *
FROM [MyServerConnection].[SomeDatabase].[dbo].[TableName]

我可能遲到了,但我發現以下鏈接對我有用:

為了執行初始鏈接,我使用了

EXEC sp_addlinkedserver @server='serverLinkPseudonym',@srvproduct='',@provider='SQLOLEDB', @datasrc='192.168.1.1';

然后,當我使用Windows身份驗證登錄時,我添加了Windows用戶(這使我的“與可信SQL Server無關”錯誤)

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'MACHINENAME\windowsLogin', 'lnkSrvLogin', 'lnkSrvPswd';  

我還發現,如果我要運行調用LinkedServer的SQL Server代理作業,我必須添加以下內容:

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'NT AUTHORITY\SYSTEM', 'lnkSrvLogin', 'lnkSrvPswd';     

為清楚起見:“192.168.1.1”是要鏈接的服務器的IP。 “lnkSrvLogin”是要鏈接到的服務器上的登錄名,可以訪問您需要訪問的數據庫。 “lnkSrvPswd”是該帳戶的密碼。

如果使用現有服務器中的帳戶連接到鏈接服務器,則只需在sp_addlinkedsrvlogin命令中使用該帳戶名。 例如:

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'thisServerLogin', 'lnkSrvLogin', 'lnkSrvPswd';  

然后測試一下:

SELECT * FROM [serverLinkPseudonym].[DBName].[dbo].[TableName]

如果您希望能夠查詢其他服務器,則需要創建鏈接服務器。

這個頁面對sp的工作方式進行了非常詳盡的探討。 http://doc.ddart.net/mssql/sql70/sp_adda_17.htm

如果你想鏈接到antoher sql server,只需執行以下命令:

sp_addlinkedserver @server='ServerName', @srvproduct='SQL Server'

@server是要添加的服務器的名稱。 @srcproduct是它的服務器類型。 可能還有其他一些事情要做,以便將2008年與2005年聯系起來,但2008年應該像這樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM