本文對(duì)SQL Server跨服務(wù)器連接的方式進(jìn)行總結(jié)。
1、OPENDATASOURCE
在SQL文中直接用此語(yǔ)句打開(kāi)數(shù)據(jù)庫(kù)示例:
OPENDATASOURCE('SQLOLEDB','Data Source=TQDBSV001;User ID=fish;Password=2312')。RackDB.dbo.CS 此方式較為簡(jiǎn)單,但存在弊端就是速度很慢。
2、OPENROWSET
包括從 OLE DB 資料來(lái)源存取遠(yuǎn)端資料需要的所有連線資訊。這個(gè)方法是在連結(jié)伺服器存取資料表的替代方法,而且是使用 OLE DB 連線與存取遠(yuǎn)端資料的一次、特定的方法。OPENROWSET 函數(shù)可以在查詢(xún)的 FROM 子句中當(dāng)作資料表名稱(chēng)來(lái)參考。根據(jù) OLE DB Provider 的能力,OPENROWSET 函數(shù)也可以當(dāng)作 Insert、Update 或 Delete 陳述式的目標(biāo)資料表來(lái)參考。雖然查詢(xún)可能會(huì)傳回多個(gè)結(jié)果集,OPENROWSET 只傳回第一個(gè)結(jié)果集。語(yǔ)法:
OPENROWSET ( 'provider_name', { 'datasource' ; 'user_id' ; 'password'| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
) 參數(shù):
'provider_name':代表登錄中指定的 OLE DB Provider 的親和名稱(chēng)之字元字串。
'provider_name' 沒(méi)有預(yù)設(shè)值。
'datasource':是對(duì)應(yīng)到特殊 OLE DB 資料來(lái)源的字串常數(shù)。
'datasource' 是要傳送到提供者 IDBProperties 介面以初始化提供者的 DBPROP_INIT_DATASOURCE 屬性。一般而言,此字串包括資料庫(kù)檔案名稱(chēng)、資料庫(kù)伺服器名稱(chēng)或提供者了解并用以尋找資料庫(kù)的名稱(chēng)。
'user_id':是要傳送到指定的 OLE DB Provider 的使用者名稱(chēng)字串常數(shù)。user_id 指定連線的安全性?xún)?nèi)容且以 DBPROP_AUTH_USERID 屬性傳送以初始化提供者。
'password':是要傳送到 OLE DB Provider 的使用者密碼字串常數(shù)。初始化提供者時(shí),password 以 DBPROP_AUTH_PASSWORD 屬性傳送。
'provider_string':是以 DBPROP_INIT_PROVIDERSTRING 屬性傳送以初始化 OLE DB Provider 的特定提供者連線字串。provider_string 一般會(huì)包含所有初始化提供者時(shí)需要的所有連線資訊。
catalog:是有指定物件的資料庫(kù)目錄或資料庫(kù)名稱(chēng)。
schema:是指定物件的結(jié)構(gòu)描述或物件擁有者名稱(chēng)。
object:唯一指定要操作的物件之物件名稱(chēng)。
'query':傳送到提供者并由提供者執(zhí)行的字串常數(shù)。MicrosoftR SQL Server? 不處理此查詢(xún),但處理由提供者傳回的查詢(xún)結(jié)果 (傳遞查詢(xún))。傳遞查詢(xún)用在不經(jīng)由資料表名稱(chēng)而只經(jīng)由命令語(yǔ)言顯露其表格資料的提供者時(shí),非常有用。只要查詢(xún)提供者支援 OLE DB Command 物件及其強(qiáng)制介面,遠(yuǎn)端伺服器就支援傳遞查詢(xún)。如需詳細(xì)資訊,請(qǐng)參閱 SQL Server OLE DB Programmer's Reference。
備注:
如果 OLE DB Provider 支援指定的資料來(lái)源中的多個(gè)目錄與結(jié)構(gòu)描述,就需要資料庫(kù)目錄與結(jié)構(gòu)描述名稱(chēng)。如果 OLE DB Provider 不支援,可以省略 catalog 與 schema 的值。
如果提供者只支援結(jié)構(gòu)描述名稱(chēng),必須指定 schema.object 格式之兩個(gè)部份的名稱(chēng)。如果提供者只支援資料庫(kù)目錄名稱(chēng),必須指定 catalog.schema.object 格式之三個(gè)部份的名稱(chēng)。
OPENROWSET 不接受變數(shù)作為其引數(shù)。
權(quán)限:
OPENROWSET 權(quán)限由傳送到 OLE DB Provider 的使用者名稱(chēng)的權(quán)限來(lái)決定。
范例:
A. 使用有 Select 的OPENROWSET 與 Microsoft OLE DB Provider for SQL Server
以下范例使用 Microsoft OLE DB Provider for SQL Server,以存取命名為 seattle1 的遠(yuǎn)端伺服器上 pubs 資料庫(kù)的 authors 資料表。從 datasource、user_id 與 password 初始化提供者,且使用 Select 來(lái)定義傳回的資料列集。
格式:
Select a.*
FROM OPENROWSET('SQLOLEDB','ServerName';'LoginUser';'Password',
'Select * FROM [DatabaseName].dbo.TableName orDER BY ColName1, ColName12') AS a 說(shuō)明:查詢(xún)所提供的驅(qū)動(dòng)程序(SQLOLEDB是查詢(xún)SQL Server),查詢(xún)SQL服務(wù)器ServerName下的Databasename中的數(shù)據(jù)TableName表中的數(shù)據(jù)(SQL語(yǔ)句),其實(shí)用戶(hù)權(quán)限是LoginUser.
相關(guān)推薦:
2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計(jì)劃
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |