SQL Server教程:讀取第三方數據庫的數據

作者: cnd8,  出處:IT專家網論壇, 責任編輯: 陳子琪, 2010-04-21 13:00   現在需要在一臺服務器(A)上的數據庫(Master)裏訪問另外一臺服務器(B)的另外兩個數據庫(NZ 和 AU)。AU 和 NZ 是網站的部分實時數據,目前某一步操作的REPLICATION方案是從服務器B到A,AU / NZ 的表結構同Master 數據結構基本一致。  現在需要在一臺服務器(A)上的數據庫(Master)裏訪問另外一臺服務器(B)的另外兩個數據庫(NZ 和 AU)。AU 和 NZ 是網站的部分實時數據,目前某一步操作的REPLICATION方案是從服務器B到A,AU / NZ 的表結構同Master 數據結構基本一致。   這樣一來,當把AU Replication 到 Master 後,在把 NZ Replication 到 Master , Master 裏的就只剩 NZ 的數據了。反過來就只有AU的了,具體的Replication 是怎麼一回事,我也不懂,也沒有細看。   如果能在Master 裏直接操作 AU 和 NZ 就好了。   SQLServer 有函數:   OPENROWSET 和 OPENDATASOURCE   這兩個函數不但能實現從另外的數據庫讀數據,而且還能從EXCEL、TXT, ORACLE, ODBC 等讀數據。   --啓用Ad Hoc Distributed Queries:   exec sp_configure 'show advanced options',1   reconfigure   exec sp_configure 'Ad Hoc Distributed Queries',1   reconfigure   SELECT *   FROM OPENDATASOURCE(   'SQLOLEDB',   'Data Source=SQLServerName;User ID=sa;Password=xxx'   ).Help.dbo.Help_Category   或   select * from openrowset( 'SQLOLEDB ', 'SQLServerName'; 'sa'; 'xxx', Help.dbo.Help_Category )   --關閉Ad Hoc Distributed Queries:   exec sp_configure 'Ad Hoc Distributed Queries',0   reconfigure   exec sp_configure 'show advanced options',0   reconfigure   但是,這樣寫着有點複雜,而且不便於維護,假如數據庫密碼改變了,就需要把一個一個把密碼改正。   Oracle 裏有 DB Link, 而且語法非常簡潔。   查了一下幫助,SQLServer 裏有 "鏈接服務器" 這個東東。要創建 鏈接服務器需要用到SQLServer 的一個系統存儲過程:   sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]   [ , [ @provider= ] 'provider_name' ]   [ , [ @datasrc= ] 'data_source' ]   [ , [ @location= ] 'location' ]   [ , [ @provstr= ] 'provider_string' ]   [ , [ @catalog= ] 'catalog' ]   exec sp_addlinkedserver @server= 'XLING' , @srvproduct = '', @provider = 'SQLNCLI' , @datasrc = 'SQLServerName2'

現在需要在一臺服務器(A)上的數據庫(Master)裏訪問另外一臺服務器(B)的另外兩個數據庫(NZ 和 AU)。AU 和 NZ 是網站的部分實時數據,目前某一步操作的REPLICATION方案是從服務器B到A,AU / NZ 的表結構同Master 數據結構基本一致。

  執行後,可以在 Sqlserver Management Studio 的對象資源管理器裏的 服務器對象 -》 鏈接服務器 裏看到看這個 XLING

  然後就可以用:


  SELECT * FROM XLING.PricemeHelp.dbo.Help_Category

  這裏的XLING就是指向數據庫SQLServerName2的鏈接服務器,從上面的SELECT可以看出,寫的依然複雜。

  SQLServer 也有,而且語法差不多:

  CREATE SYNONYM dbo.Help_Category_NZ FOR XLING.PricemeHelp.dbo.Help_Category

  執行後,就可以用:

  SELECT * FROM Help_Category_NZ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章