SQL Server 2008數(shù)據(jù)庫分布式查詢知識
在接觸公司一個系統(tǒng)時,公司使用的是SQL Server 2008數(shù)據(jù)庫,里面涉及到了多個數(shù)據(jù)庫之間的查詢,而且數(shù)據(jù)庫是分布式的,數(shù)據(jù)庫分布在多臺服務(wù)器之間,并且各個數(shù)據(jù)庫各盡其責,負責存放不同模塊功能的數(shù)據(jù)。這里面就要涉及到了數(shù)據(jù)庫的分布式查詢。
補充一下分布式查詢的知識:
分布式查詢從多異類數(shù)據(jù)源中訪問數(shù)據(jù)。這些數(shù)據(jù)源可以存儲在同一臺計算機或不同的計算機上。Microsoft SQL Server 通過使用 OLE DB 來支持分布式查詢。
SQL Server 用戶可以使用分布式查詢訪問以下內(nèi)容:
- 存儲在多個 SQL Server 實例中的分布式數(shù)據(jù)。
- 存儲在各種可以使用 OLE DB 訪問接口訪問的關(guān)系和非關(guān)系數(shù)據(jù)源中的異類數(shù)據(jù)。
OLE DB 訪問接口將在稱為行集的表格格式對象中公開數(shù)據(jù)。SQL Server 允許在 Transact-SQL 語句中像引用 SQL Server 表一樣引用 OLE DB 訪問接口中的行集。
外部數(shù)據(jù)源中的表和視圖可以在 SELECT、INSERT、UPDATE 和 DELETE Transact-SQL 語句中直接引用。因為分布式查詢使用 OLE DB 作為基本接口,因此它們不僅可以訪問帶有 SQL 查詢處理器的傳統(tǒng) DBMS 系統(tǒng),也可以訪問復(fù)雜的、具有不同功能的數(shù)據(jù)源所管理的數(shù)據(jù)。只要擁有數(shù)據(jù)的軟件通過 OLE DB 訪問接口在表格格式行集中公開其數(shù)據(jù),就可在分布式查詢中使用此數(shù)據(jù)

因為公司的業(yè)務(wù)要經(jīng)常使用不同服務(wù)器上的數(shù)據(jù)庫,所以公司的數(shù)據(jù)庫都建立了一堆的鏈接服務(wù)器。通過建立這些鏈接服務(wù)器,就可以使用這些鏈接服務(wù)器的別名來簡化SQL語句的編寫和sql開銷;
使用SQL SERVER 2008管理工具可以直接界面化的添加鏈接服務(wù)器;這里給出使用sql語句,利用系統(tǒng)存儲過程來添加鏈接服務(wù)器的方法,這里要用到兩個存儲過程:
sp_addlinkedserver sp_addlinkedsrvlogin
一個是添加鏈接服務(wù)器,一個是添加鏈接服務(wù)器連接登陸驗證;具體此兩個存儲過程參數(shù)含義,請參考微軟手冊;注意,執(zhí)行此存儲過程登陸的用戶必須要有Sysadmin權(quán)限才能執(zhí)行;
假設(shè)現(xiàn)在在10.155.25.100 上的db中要使用10.155.24.101上一個 FlieDB01表中的信息;則在10.155.25.100上進行如下SQL 語句:
exec sp_addlinkedserver @server='SZDB01', --要添加的連接服務(wù)器的別名 @srvproduct='', @provider='SQLOLEDB',--指定通過SQLOLEDB鏈接 @datasrc='10.155.24.101'--DB地址 exec sp_addlinkedsrvlogin 'SZDB01',--連接服務(wù)器的別名 'false', NULL, 'szUSER',--登陸用戶名 'Password@123'--登陸密碼 --執(zhí)行完之后就可以寫這樣的查詢語句了 select * from openquery([SZDB01],'select file_No,file_Name from FileDB01.dbo.getFileList()') as tableA --這里的DZDB01就是上面添加的連接服務(wù)器的別名
有多個就添加多個連接服務(wù)器;這是其中的一種;
還有一種就是使用opendatasource,這是SQL的一個函數(shù),其能夠打開指定的DB,而且這個函數(shù)的執(zhí)行權(quán)限很低,技術(shù)手冊中說任何人都可以執(zhí)行此函數(shù);這個函數(shù)也是hacker常用的數(shù)據(jù)爆表的一個手段;目前查看SQL Server 2008的手冊中,其說明還是說所有人都有權(quán)限執(zhí)行;
這個函數(shù)只能是不常用的查詢中會用到;
舉一個簡單的例子:
select * from opendatasource('SQLOLEDB','Data Source=10.155.24.100;User ID="szUSER";Password="Password@123"') as tableA
這個也是對上面的一種實現(xiàn);
opendatasource還可以直接打開mdb這類文件。這種我就沒有去試驗了,技術(shù)從書中有說明;
select * from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="d:/abcd.mdb"')
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
SQL2008中SQL應(yīng)用之- 死鎖(Deadlocking)
當一個用戶會話(會話1)已經(jīng)落定了一個資源,而另一個會話(會話2)想要修改該資源,并且會話2也鎖定了會話1想要修改的資源時,就會出現(xiàn)“死鎖”(deadlocking)。2011-06-06
SQL Server 2008 安裝SQLDMO.dll的方法
ASP.NET利用它可以實現(xiàn)在線備份、還原數(shù)據(jù)庫等各種功能2014-05-05
SQL Server 2008 數(shù)據(jù)庫鏡像部署實例之三 配置見證服務(wù)器
前面已經(jīng)完成了鏡像數(shù)據(jù)庫的配置,并進行那個了故障轉(zhuǎn)移測試。接下來將部署見證服務(wù)器,實現(xiàn)自動故障轉(zhuǎn)移2013-11-11
SqlServer2008誤操作數(shù)據(jù)(delete或者update)后恢復(fù)數(shù)據(jù)的方法
這篇文章主要介紹了SqlServer2008誤刪數(shù)據(jù)(delete或者update)后恢復(fù)數(shù)據(jù)的方法,感興趣的小伙伴們可以參考一下2016-05-05
SQL Server 2008 阻止保存要求重新創(chuàng)建表的更改問題的設(shè)置方法
不是很理解為什么在2008中會加入阻止保存要求重新創(chuàng)建表的更改這個選項.癥狀表現(xiàn)為修改表結(jié)構(gòu)的時候會"阻止"你.而且我遇到的情況是居然有的時候阻止你,有的時候不阻止你,摸不到頭腦.2012-05-05
SQL server 2008 數(shù)據(jù)庫優(yōu)化常用腳本
這篇文章主要介紹了SQL server 2008 數(shù)據(jù)庫優(yōu)化常用腳本,需要的朋友可以參考下2015-10-10
解決SQL Server 2008 不能使用 “.” local本地連接數(shù)據(jù)庫問題
這篇文章主要介紹了解決SQL Server 2008 不能使用 “.” local本地連接數(shù)據(jù)庫問題,需要的朋友可以參考下2018-07-07
mssql 監(jiān)控磁盤空間告警實現(xiàn)方法
需要通過調(diào)用OLE 自動存儲過程獲取磁盤信息,而這些組件,基于服務(wù)器的安全配置,通常是禁用的,我們在存儲過程通過sp_configure開啟這個服務(wù),調(diào)用服務(wù)完畢后,又通過sp_configure禁用該服務(wù)。另外,數(shù)據(jù)庫服務(wù)器都位于內(nèi)網(wǎng),因此安全問題應(yīng)該不大2013-08-08

