OPENDATASOURCE (Transact-SQL)OPENDATASOURCE (Transact-SQL)

適用対象:○SQL Server (2008 以降) ○Azure SQL Database (Managed Instance のみ) ×Azure SQL Data Warehouse ×Parallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

リンク サーバー名を使用せずに、4 つの要素で構成されるオブジェクト名の一部としてアドホック接続情報を提供します。Provides ad hoc connection information as part of a four-part object name without using a linked server name.

リンク アイコン Transact-SQL 構文表記規則link icon Transact-SQL Syntax Conventions

構文Syntax


OPENDATASOURCE ( provider_name, init_string )  

引数Arguments

provider_nameprovider_name
データ ソースにアクセスするときに使用される、OLE DB プロバイダーの PROGID として登録されている名前を指定します。Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name のデータ型は char であり、既定値はありません。provider_name is a char data type, with no default value.

init_stringinit_string
接続先のプロバイダーの IDataInitialize インターフェイスに渡される接続文字列を指定します。Is the connection string passed to the IDataInitialize interface of the destination provider. プロバイダーの文字列には、'***keyword1*=* value;keyword2*=* value\'* のように、セミコロンで区切ったキーワードと値の組を指定します。The provider string syntax is based on keyword-value pairs separated by semicolons, such as: '***keyword1*=* value;keyword2*=* value\'*.

プロバイダーでサポートされる、特定のキーワードと値の組み合わせについては、 MicrosoftMicrosoft Data Access SDK を参照してください。For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. このドキュメントには、基本構文が定義されています。This documentation defines the basic syntax. 次の表は、init_string 引数で最もよく使われるキーワードの一覧です。The following table lists the most frequently used keywords in the init_string argument.

KeywordKeyword OLE DB プロパティOLE DB property 有効な値と説明Valid values and description
[データ ソース]Data Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE 接続先のデータ ソースの名前。Name of the data source to connect to. この値の解釈は、プロバイダーによって異なります。Different providers interpret this in different ways. SQL ServerSQL Server Native Client OLE DB プロバイダーの場合、この値はサーバーの名前を表します。For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Jet OLE DB プロバイダーの場合、この値は .mdb ファイルまたは .xls ファイルのフル パスを表します。For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
場所Location DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION 接続先のデータベースの位置。Location of the database to connect to.
Extended PropertiesExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING プロバイダー固有の接続文字列。The provider-specific connect-string.
Connect timeoutConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT 接続試行が失敗する基準となるタイムアウト値。Time out value after which the connection try fails.
[ユーザー ID]User ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID 接続に使用されるユーザー ID。User ID to be used for the connection.
パスワードPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD 接続に使用されるパスワード。Password to be used for the connection.
CatalogCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG データ ソースに接続するときの初期カタログまたは既定のカタログの名前。The name of the initial or default catalog when connecting to the data source.
Integrated SecurityIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED Windows 認証を指定する SSPI。SSPI, to specify Windows Authentication

RemarksRemarks

OPENDATASOURCE は、OLE DB データ ソースからリモート データにアクセスするときに使用できます。ただしこの場合、指定したプロバイダーに対して DisallowAdhocAccess レジストリ オプションが明示的に 0 に設定されており、Ad Hoc Distributed Queries 詳細構成オプションが有効になっている必要があります。OPENDATASOURCE can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. これらのオプションが設定されていない場合は、既定でアドホック接続は許可されません。When these options are not set, the default behavior does not allow for ad hoc access.

OPENDATASOURCE 関数は、 Transact-SQLTransact-SQL 構文内のリンク サーバー名と同じ位置で使用できます。The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. つまり、この関数は、4 つの要素で構成される名前の先頭で、SELECT、INSERT、UPDATE、および DELETE ステートメント内のテーブル名やビュー名、または EXECUTE ステートメント内のリモート ストアド プロシージャを参照する要素として使用できます。Therefore, OPENDATASOURCE can be used as the first part of a four-part name that refers to a table or view name in a SELECT, INSERT, UPDATE, or DELETE statement, or to a remote stored procedure in an EXECUTE statement. リモート ストアド プロシージャを実行する場合、OPENDATASOURCE では別の SQL ServerSQL Server インスタンスを参照する必要があります。When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. OPENDATASOURCE の引数に変数は指定できません。OPENDATASOURCE does not accept variables for its arguments.

OPENROWSET 関数と同様に、OPENDATASOURCE では、あまり頻繁にアクセスされない OLE DB データ ソースだけを参照してください。Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. 頻繁にアクセスされるデータ ソースに対してはリンク サーバーを定義します。Define a linked server for any data sources accessed more than several times. OPENDATASOURCE でも OPENROWSET でも、リンク サーバー定義のすべての機能は提供されず、たとえばセキュリティを管理したりカタログ情報に対してクエリを実行したりすることはできません。Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. すべての接続情報は、パスワードを含め、OPENDATASOURCE を呼び出すたびに指定する必要があります。All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

重要

Windows 認証は、 SQL ServerSQL Server 認証よりもはるかに安全性に優れています。Windows Authentication is much more secure than SQL ServerSQL Server Authentication. できるだけ Windows 認証を使用してください。You should use Windows Authentication whenever possible. 接続文字列では、OPENDATASOURCE と共に明示的なパスワードを指定しないでください。OPENDATASOURCE should not be used with explicit passwords in the connection string.

各プロバイダーの接続要件は、リンク サーバー作成時におけるこれらのパラメーターの要件に似ています。The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. 多くの一般的なプロバイダーについて詳しくは、「sp_addlinkedserver (Transact-SQL)」の一覧をご覧ください。The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

FROM 句での OPENDATASOURCE、OPENQUERY、または OPENROWSET の呼び出しは、更新の対象として使用されるこれらの関数の呼び出しとは別に評価されます。これは、両方の呼び出しに同じ引数が指定されている場合にも当てはまります。Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. 特に、いずれか一方の呼び出しの結果に適用されるフィルター条件または結合条件は、もう一方の結果に影響しません。In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

アクセス許可Permissions

すべてのユーザーが OPENDATASOURCE を実行できます。Any user can execute OPENDATASOURCE. リモート サーバーへの接続に使用される権限は、接続文字列によって決まります。The permissions that are used to connect to the remote server are determined from the connection string.

使用例Examples

次の例では、サーバー London 上の SQL ServerSQL ServerPayroll インスタンスにアドホック接続を作成し、AdventureWorks2012.HumanResources.Employee テーブルをクエリします。The following example creates an ad hoc connection to the Payroll instance of SQL ServerSQL Server on server London, and queries the AdventureWorks2012.HumanResources.Employee table. (SQLNCLI を使用すると、 SQL ServerSQL Server により最新バージョンの SQL ServerSQL Server Native Client OLE DB プロバイダーにリダイレクトされます)。(Use SQLNCLI and SQL ServerSQL Server will redirect to the latest version of SQL ServerSQL Server Native Client OLE DB Provider.)

SELECT *  
FROM OPENDATASOURCE('SQLNCLI',  
    'Data Source=London\Payroll;Integrated Security=SSPI')  
    .AdventureWorks2012.HumanResources.Employee  

次の例では、1997 - 2003 形式の Excel スプレッドシートへのアドホック接続を作成します。The following example creates an ad hoc connection to an Excel spreadsheet in the 1997 - 2003 format.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',  
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;  

参照See Also

OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)