SQLServer 鏈結伺服器及同義詞

2022-02-21 05:07:41 字數 4353 閱讀 3868

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'ad hoc distributed queries',1

reconfigure

--進行查詢

select * from openrowset('sqloledb', 'driver=;server=47.95.15.215;uid=sa;pwd=strong;initial catalog=pubs', 'select * from istrongpro_rivermanage_gdjm.dbo.st_pptn_r') as a

exec sp_configure 'show advanced options',0

reconfigure

exec sp_configure 'ad hoc distributed queries',0

reconfigure

openrowse(驅動型別,連線字串,查詢表)

驅動型別有三種:

msdasql/sqlncli/sqloledb

msdasql

msdasql:microsoft ole db provider for odbc drivers

允許在 oledb 和 ado(它在內部使用 oledb)上構建的應用程式通過 odbc 驅動程式訪問資料來源的技術。

msdasql 是用於連線到 odbc(而不是資料庫)的 oledb 訪問介面。

sqloledb

sqloledb :microsoft ole db provider for sql server,可以看出來sqloledb是連線到資料庫sqlserver,而不是odbc驅動
sqlncli

sqlncli10(sqlncli):sql server native client 10.0

sql server native client的定義:

sql server native client 是在 sql server 2005 中引入的用於 ole db 和 odbc 的獨立資料訪問應用程式程式設計介面 (api)。sql server native client 將 sql ole db 訪問介面和 sql odbc 驅動程式組合成乙個本機動態鏈結庫 (dll)。為了利用在 sql server 2005以及以上的版本的新功能,比如多個活動結果集 (mars)、查詢通知、使用者定義型別 (udt) 或新的 xml 資料型別,那些使用 activex data objects (ado) 的現有應用程式應當使用 sql server native client ole db 訪問介面作為其資料訪問介面。

如果不需要使用在 sql server 2005 及其以後的版本中引入的任何新功能,則不需要使用 sql server native client ole db 訪問介面;您可以繼續使用當前資料訪問介面(通常是 sqloledb)。如果要增強現有應用程式的功能,並且需要使用在 sql server 2005 及其以後的版本中引入的新功能,則應當使用 sql server native client ole db 訪問介面。

注:以上 reconfigure可能會報錯可改:禁用對 recoveryinterval 高階配置選項的配置值檢查(以查詢無效值或非建議值)。

reconfigure with override

例如:

exec sp_configure 'show advanced options',1

reconfigure with override`

exec sp_configure 'ad hoc distributed queries',1

reconfigure with override`

go--執行語句

goexec sp_configure 'show advanced options',0

reconfigure with override`

exec sp_configure 'ad hoc distributed queries',0

reconfigure with override`

2.1 命令

--建立鏈結伺服器

exec sp_addlinkedserver 'servername', '', 'sqloledb','47.95.15.111'

exec sp_addlinkedsrvlogin 'servername', 'false',null,'sa','strong'

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

exec sp_serveroption n'servername', n'rpc', n'true'

--注 servername 就是查詢的時候用來表示伺服器名的別稱。

--查詢

select * from servername.pro_rivermanage.dbo.st_pptn_r

--當然此處的servername也可以寫數字,如果是資料,必須以雙引號或中括號框起來,如[47.95.15.111] "47.95.15.111"

--example: select * from [47.95.15.111]].pro_rivermanage.dbo.st_pptn_r--(前提上面的servername寫成47.95.15.111)

--刪除鏈結伺服器

exec sp_dropserver 'servername ', 'droplogins '--可以不用刪除,也可以保留,只是點儲存空間,影響不大,

2.2.手動介面操作

新增成功後,可以在「伺服器對像》鏈結伺服器」,可以看到剛剛新增的鏈結伺服器,點選進行測試是否可以連線成功!

--查詢的時候就可以

select * from [47.96.12.111,1433].pro_rivermanage.dbo.st_pptn_r

同義詞分為同庫的表同義詞跟跨庫、跨服的同義詞

這裡主要說一下跨服的同義語,跨服的功能需要立足於鏈結伺服器才可以使用

比如這個表單太長,我們想在本地庫直接

select * from [47.96.12.111,1433].pro_rivermanage.dbo.st_pptn_r

這樣子,看起來這個表就跟本地的表一樣,其實這個表是個遠端庫的表!

select * from dbo.st_pptn_r

實現方式就是同義詞,在本地資料庫對映個別名直接呼叫。看起來像使用本庫的表一樣。

1.、介面工具方式建立

確認之後就可以試寫用select * from dbo.st_pptn_r像查詢本地表一樣進行查詢,鏈結交給資料庫鏈結伺服器功能塊去處理

2、 指令碼命令方式建立

--建立同義詞

create synonym dbo.st_pptn_r for itsv.pro_rivermanage.dbo.st_pptn_r

--查詢有哪些同義詞

select * from sys.synonyms where name='st_pptn_r'

SQLServer建立鏈結伺服器

use master go 新增伺服器 exec sp addlinkedserver server hang 此名字可以隨便取 srvproduct sql provider sqloledb datasrc 10.130.26.x 說明 另外一台伺服器的ip go 登陸伺服器 exec sp a...

SQLServer的鏈結伺服器

今天在研究自動化測試時,需要檢視access資料檔案的資料表,但是沒有裝access,找來找去找不到office的安裝盤,情急下突然想起在sqlserver中可以新增 鏈結伺服器 來訪問其他型別的資料庫,方法如下 1 開啟sqlserver企業管理器,選擇 安全性 鏈結伺服器 單擊右鍵,選擇 新建鏈...

SQL SERVER 鏈結伺服器Mysql

2 管理工具 odbc資料來源 系統dsn 新增 選擇 mysql odbc 5.3 unicode driver 完成 會跳出來mysql連線引數 data source name 資料來源名稱 decription 描述,隨便寫 server mysql伺服器的ip port mysql的埠,預...