SQL 儲存過程連線遠端伺服器資料庫的方法

2021-06-16 01:25:38 字數 1428 閱讀 8306

一、建立鏈結sql server伺服器,通常有兩種情況:

第一種情況,產品選」sql server」

exec sp_addlinkedserver

@server='linkservername',

@srvproduct = n'sql server'

這種情況,@server (linkservername)就是要鏈結的sqlserver伺服器名或者ip位址。

第二種情況,訪問介面選「microsoft ole db provider sql server」或「sql native client」

exec sp_addlinkedserver

@server=' linkservername ',

@srvproduct='',

@provider='sqlncli',

@datasrc='sqlservername'

這種情況,@datasrc(sqlservername)就是要鏈結的實際sqlserver伺服器名或者ip位址。

a

資料庫引擎

第一種情況的@server或者第二種情況的@datasrc設定為ip位址時,資料庫引擎會根據ip位址訪問鏈結伺服器,這時不需要做名稱解析。

第一種情況的@server或者第二種情況的@datasrc設定為sql server伺服器名時,需要做名稱解析,就是把伺服器名解析為ip位址。

有兩個辦法解析伺服器名:

一是在sql server客戶端配置中設定乙個別名,將上面的伺服器名對應到鏈結伺服器的ip位址。

二是在「c:/windows/system32/drivers/etc/hosts」檔案中增加一條記錄:

***.***.***.***

伺服器名

作用同樣是把伺服器名對應到鏈結伺服器的ip位址。

b、dtc

不管哪一種情況,只要@server設定的是伺服器名而不是ip位址,就需要進行名稱解析,辦法同上面第二種辦法,在hosts檔案中增加解析記錄,上面的第一種辦法對dtc不起作用。

如果@server設定的是ip位址,同樣不需要做網域名稱解析工作。

二、遠端伺服器上的名稱解析

分布式事務的參與伺服器是需要相互訪問的,發起查詢的伺服器要根據機器名或ip查詢遠端伺服器的,同樣遠端伺服器也要查詢發起伺服器,遠端伺服器通過發起伺服器的機器名查詢伺服器,所以要保證遠端伺服器能夠通過發起伺服器的機器名訪問到發起伺服器。

一般的,兩個伺服器在同一網段機器名能就行很好的解析,但是也不保證都能很好的解析,所以比較保險的做法是:

在遠端伺服器的在「c:/windows/system32/drivers/etc/hosts」檔案中增加一條記錄:

***.***.***.***

發起伺服器名

儲存過程 獲取連線SQL伺服器的資訊

if exists select from dbo.sysobjects where id object id n dbo p getlinkinfo and objectproperty id,n isprocedure 1 drop procedure dbo p getlinkinfo go ...

遠端連線伺服器

在工作當中,難免要和伺服器打交道。有些事情在本地操作起來很簡單,但是要想在伺服器上也像本地一樣那麼簡單,就得把遠端連線這塊搞明白。系統 ubuntu 16.04 目錄一.ssh遠端連線伺服器 1.用scp命令 不推薦 2.用filazilla 推薦 三.遠端編輯檔案 1.jupyter 不推薦 2....

建立鏈結伺服器 呼叫遠端儲存過程

if exists select from master.dbo.sysservers where srvname srv lnk 判斷是否存在srv lnk的鏈結伺服器 exec sp dropserver srv lnk droplogins 刪除srv lnk鏈結伺服器 exec sp add...