日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

跨sql server查询mysql_SQL Server 跨数据库查询数据的方法

發布時間:2024/10/8 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨sql server查询mysql_SQL Server 跨数据库查询数据的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OPENDATASOURCE

不使用鏈接的服務器名,而提供特殊的連接信息,并將其作為四部分對象名的一部分。

語法

OPENDATASOURCE ( provider_name, init_string )

參數

provider_name

注冊為用于訪問數據源的 OLE DB 提供程序的 PROGID 的名稱。provider_name 的數據類型為 char,沒有默認值。

init_string

連接字符串,這些字符串將要傳遞給目標提供程序的 IDataInitialize 接口。提供程序字符串語法是以關鍵字值對為基礎的,這些關鍵字值對由分號隔開,例如:"keyword1=value; keyword2=value."

在 Microsoft? Data Access SDK 中定義了基本語法。有關所支持的特定關鍵字值對的信息,請參見提供程序中的文檔。下表列出 init_string 參數中最常用的關鍵字。

關鍵字 OLE DB 屬性 有效值和描述

數據源 DBPROP_INIT_DATASOURCE 要連接的數據源的名稱。不同的提供程序用不同的方法對此進行解釋。對于 SQL Server

OLE DB 提供程序來說,這會指明服務器的名稱。對于 Jet OLE DB 提供程序來說,這會指明 .mdb 文件或 .xls

文件的完整路徑。

位置 DBPROP_INIT_LOCATION 要連接的數據庫的位置。

擴展屬性 DBPROP_INIT_PROVIDERSTRING 提供程序特定的連接字符串。

連接超時 DBPROP_INIT_TIMEOUT 超時值,在該超時值后,連接嘗試將失敗。

用戶 ID DBPROP_AUTH_USERID 用于該連接的用戶 ID。

密碼 DBPROP_AUTH_PASSWORD 用于該連接的密碼。

目錄 DBPROP_INIT_CATALOG 連接到數據源時的初始或默認的目錄名稱。

注釋

OPENDATASOURCE 函數可以在能夠使用鏈接服務器名的相同 Transact-SQL 語法位置中使用。因此,就可以將

OPENDATASOURCE 用作四部分名稱的第一部分,該名稱指的是 SELECT、INSERT、UPDATE 或 DELETE

語句中的表或視圖的名稱;或者指的是 EXECUTE 語句中的遠程存儲過程。當執行遠程存儲過程時,OPENDATASOURCE 應該指的是另一個

SQL Server。OPENDATASOURCE 不接受參數變量。

與 OPENROWSET 函數類似,OPENDATASOURCE

應該只引用那些不經常訪問的 OLE DB 數據源。對于訪問次數稍多的任何數據源,請為它們定義鏈接的服務器。無論 OPENDATASOURCE

還是 OPENROWSET 都不能提供鏈接的服務器定義的全部功能,例如,安全管理以及查詢目錄信息的能力。每次調用 OPENDATASOURCE

時,都必須提供所有的連接信息(包括密碼)。

示例

下面的示例訪問來自某個表的數據,該表在 SQL Server 的另一個實例中。

SELECT??? *

FROM?????? OPENDATASOURCE(

'SQLOLEDB',

'Data Source=ServerName;User ID=MyUID;Password=MyPass'

).Northwind.dbo.Categories

下面是個查詢的示例,它通過用于 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/Finance/account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

OPENROWSET

包含訪問 OLE DB 數據源中的遠程數據所需的全部連接信息。當訪問鏈接服務器中的表時,這種方法是一種替代方法,并且是一種使用 OLE DB

連接并訪問遠程數據的一次性的、特殊的方法。可以在查詢的 FROM 子句中像引用表名那樣引用 OPENROWSET 函數。依據 OLE DB

提供程序的能力,還可以將 OPENROWSET 函數引用為 INSERT、UPDATE 或 DELETE

語句的目標表。盡管查詢可能返回多個結果集,然而 OPENROWSET 只返回第一個。

語法

OPENROWSET ( 'provider_name'

, { 'datasource' ; 'user_id' ; 'password'

| 'provider_string' }

, { [ catalog.] [ schema.] object

| 'query' }

)

參數

'provider_name' 字符串,它代表在注冊表中指定的 OLE DB 提供程序的友好名。provider_name 沒有默認值。

'datasource' 字符串常量,它對應著某個特定的 OLE DB 數據源。datasource 是將被傳遞到提供程序

IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE

屬性。通常,這個字符串包含數據庫文件的名稱、數據庫服務器的名稱,或者提供程序能理解的用于查找數據庫的名稱。

'user_id' 字符串常量,它是傳遞到指定 OLE DB 提供程序的用戶名。user_id 為連接指定安全上下文,并將它作為 DBPROP_AUTH_USERID 屬性傳遞進來以初始化提供程序。

'password' 字符串常量,它是將被傳遞到 OLE DB 提供程序的用戶密碼。當初始化提供程序時,將 password 作為 DBPROP_AUTH_PASSWORD 屬性傳遞進來。

'provider_string' 提供程序特定的連接字符串,將它作為 DBPROP_INIT_PROVIDERSTRING 屬性傳遞進來以初始化 OLE DB 提供程序。通常 provider_string 封裝初始化提供程序所需的所有連接信息。

catalog 目錄或數據庫的名稱,其中駐留著指定的對象。

schema?? 架構的名稱或指定對象的對象所有者名稱。

object?? 對象名稱,它唯一地標識出將要操作的對象。

'query' 是字符串常量,發送到提供程序并由提供程序執行。Microsoft? SQL Server?

不處理該查詢,但處理由提供程序返回的查詢結果(直接傳遞查詢)。對于有些提供程序,它們并沒有通過表名而是通過命令語言表現自己的表格格式數據,那么將直接傳遞查詢用于這些提供程序是非常有用的。只要查詢提供程序支持

OLE DB Command 對象及其強制接口,那么在遠程服務器上就支持直接傳遞查詢。有關更多信息,請參見 SQL Server OLE DB

程序員參考。

注釋

如果 OLE DB 提供程序在指定的數據源中支持多個目錄和架構,那么就需要目錄及架構名稱。如果 OLE DB 提供程序并不支持目錄和架構,那么可以省略 catalog 及 schema 的值。

如果提供程序只支持架構名,那么必須指定一個兩部分名稱,形式為 schema.object。如果提供程序只支持目錄名,那么必須指定一個三部分名稱,形式為 catalog.schema.object。

OPENROWSET 不接受參數變量。

權限

OPENROWSET 權限由傳遞到 OLE DB 提供程序的用戶名的權限確定。

示例

A. 將 OPENROWSET 與 SELECT 語句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用

下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序訪問 pubs 數據庫中的 authors

表,該數據庫在一個名為 seattle1 的遠程服務器上。從 datasource、user_id 及 password

中初始化提供程序,并且使用 SELECT 語句定義返回的行集。

USE pubs

GO

SELECT a.*

FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',

'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a

GO

B. 將 OPENROWSET 與對象及用于 ODBC 的 OLE DB 提供程序一起使用

下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驅動程序訪問 pubs 數據庫中的 authors

表,該數據庫在一個名為 seattle1 的遠程服務器中。提供程序用在 ODBC 提供程序所用的 ODBC 語法中指定的

provider_string 進行初始化,定義返回的行集時使用 catalog.schema.object 語法。

USE pubs

GO

SELECT a.*

FROM OPENROWSET('MSDASQL',

'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',

pubs.dbo.authors) AS a

ORDER BY a.au_lname, a.au_fname

GO

C. 使用用于 Jet 的 Microsoft OLE DB 提供程序

下面的示例通過用于 Jet 的 Microsoft OLE DB 提供程序訪問 Microsoft Access Northwind 數據庫中的 orders 表。

說明?? 下面的示例假定已經安裝了 Access。

USE pubs

GO

SELECT a.*

FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'c:/MSOffice/Access/Samples/northwind.mdb';'admin';'mypwd', Orders)

AS a

GO

D. 使用 OPENROWSET 和 INNER JOIN 中的另一個表

下面的示例從本地 SQL Server Northwind 數據庫的 customers 表中,以及存儲在相同計算機上 Access Northwind 數據庫的 orders 表中選擇所有數據

說明?? 下面的示例假定已經安裝了 Access。

USE pubs

GO

SELECT c.*, o.*

FROM Northwind.dbo.Customers AS c INNER JOIN

OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'c:/MSOffice/Access/Samples/northwind.mdb';'admin';'mypwd', Orders)

AS o

ON c.CustomerID = o.CustomerID

GO

上面兩個方法的示例:

[OpenDataSource]??? 1.

Select * from OpenDataSource('SQLOLEDB','Data Source=ServerName;User ID=MyID;Password=MyPass').DBName.DBO.TableName

2.通過用Jet的OLEDB提供程序查詢Excel電子表格

Select * from OpenDataSource('MICROSOFT.JET.OLEDB.4.0','Data

Source="c:/account.xls";User ID=Admin;Password=;Extended

Properties=Excel 5.0')...Xactions

[OpenRowSet]??? 格式:

OpenRowSet('Provider_Name','{'DataSource';'UserID';'Password'|'Provider_String'},{[CateLog.][Schema.]Object|'Query'})

1.

Select A.* from OpenRowSet('SQLOLEDB','ServerName';'UserID';'Password','Select * from pubs.dbo.authors',Orders) as A

2.

Select A.* from OperRowset('MSDASQL','DRIVER={SQL Server};Server=ServerName;UID=UserID;PWD=MyPass',pus.dbo.Authors) as A

3.Select A.* from OperRowSet('MICROSOFT.JET.OLEDB.4.0','c:/access/northowind.mdb';'UserID';'Password',Orders) AS A

4.Select C.* ,O.* from Northowind.dbo.customers?? c

inner join OpenRowSet('MICROSOFT.JET.OLEDB.4.0','c:/access/northowind.mdb';'Admin';'MyPass',Orders) as o

on c.CustomerID = o.CustomerID

5.Select * From OpenRowSet('MICROSOFT.JET.OLEDB.4.0','EXCEL 5.0;HDR=YES;IMEX=2;DataBase=D:/Book1.XLS',[sheet1$])

總結

以上是生活随笔為你收集整理的跨sql server查询mysql_SQL Server 跨数据库查询数据的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。