轉 儲存過程跨資料庫訪問方案

2021-08-25 18:21:59 字數 2217 閱讀 6525

第一步建立乙個遠端連線

使用sql-server進行分布式查詢(鏈結伺服器)

可以使用sql-server企業管理器進行建立,注意其中的rpc及rpc out兩項;也可以使用sql語句來完成定義。

(這裡提醒一下最好使用sql-server企業管理器建立!)

主要涉及到三個儲存過程

sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三個儲存過程的語法:

sp_addlinkedserver

建立乙個鏈結的伺服器,使其允許對分布式的、針對 ole db 資料來源的異類查詢進行訪問。在使用 sp_addlinkedserver 建立鏈結的伺服器之後,此伺服器就可以執行分布式查詢。如果鏈結伺服器定義為 microsoft? sql server?,則可執行遠端儲存過程。

語法 sp_addlinkedserver [ @server = ] 'server'

[ , [ @srvproduct = ] 'product_name' ]

[ , [ @provider = ] 'provider_name' ]

[ , [ @datasrc = ] 'data_source' ]

[ , [ @location = ] 'location' ]

[ , [ @provstr = ] 'provider_string' ]

[ , [ @catalog = ] 'catalog' ]

例如:

sp_addlinkedserver 'servername','','sqloledb','dbconn',null,'driver=;server=192.168.1.181;uid=sa,pwd=;'

此處servername為自定義名稱,dbconn為定義的odbc資料來源

一般使用的引數如下:

@server 「linked server」

@srvproduct 「product name」

@provider 「provider」

@datasrc 「data source」

二、設定伺服器選項

使用 sp_serveroption 過程,所要使用的引數如下:

@server 「linked server」

@optname 「rpc」或「rpc out」

@optvalue true 或 false

三、新增login

使用 sp_addlinkedsrvlogin 過程,所要使用的引數如下:

@rmtsrvname 「linked server」

@useself true 或 false

@locallogin 本地login

@rmtuser 遠端使用者

@rmtpassword 遠端使用者口令

全部完整的示例如下:

exec sp_helpserver /*---檢視遠端伺服器的列表-------*/

exec sp_helplinkedsrvlogin /*------檢視遠端伺服器的登入使用者---------*/

exec sp_droplinkedsrvlogin 'sestlserver',null /*----刪除遠端伺服器的登入使用者-----*/

exec sp_dropserver 'sestlserver','droplogins'/*-----刪除遠端伺服器------*/

exec sp_addlinkedserver 'sestlserver','','sqloledb','sestlserver',null,'driver=;server=192.168.0.2;uid=sa,pwd=;'

exec sp_serveroption n'sestlserver', n'rpc out', n'true'

exec sp_serveroption n'sestlserver', n'rpc', n'true'

exec sp_addlinkedsrvlogin 'sestlserver','false',null,'sa',

也可以這麼定義遠端連線:

exec sp_addlinkedserver 'dbx','','sqloledb','192.168.0.1'

exec sp_addlinkedsrvlogin 'dbx','false',null,'sa',''

執行:select * from dbx.資料庫名.dbo.表名

資料庫 mysql 跨庫訪問 資料庫跨庫訪問問題

sql server中的所有權鏈及其問題 沒有多少朋友對所有權鏈真的理解的。我自己有時候經常回過來看看這些資料,覺得還是很有意思的。下面的內容摘自微軟文件,介紹得比較好 簡而言之 1.如果在同乙個資料庫中,只要兩個物件的所有者是一樣的,那麼他們之間的訪問是不檢查訪問者身份的。例如乙個檢視和乙個表是屬...

SQL Server跨資料庫呼叫儲存過程

a庫儲存過程 create procedure dbo spaaafortest username nvarchar 20 null loginpwd nvarchar 60 null as begin select n a as a n b as b n c as c end同一臺伺服器例項,a,...

MySQL儲存過程跨資料庫操作同步資料

begin declare deliverstatus,smlen,datacoding,total int set total 0 while total 20 do set tsid if tsid then if resulttime and recvtime then elseif resu...