6

SQL Server Express 2005 に転送したい Oracle 11g XE データベースがあります。

最初は、Oracle でテーブルを SQL として生成し、データ形式を操作して、SQL Server でクエリを実行するだけだと思っていました。これは小さなテーブルでは機能しましたが、数十万行のテーブルと数百万行のテーブルがいくつかあるため、このソリューションは機能しません。

次に、次の内容の TNS ファイルを作成しました。

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=XE)
  )
)

ODBC接続を生成する方法について他の場所で見つけた指示に従いましたが、「テスト接続」は成功しました。

次に、これらのコマンドを実行して、MS SQL でリンク サーバーを作成しました。

EXEC sp_addlinkedserver 
     @server            = 'OracleLinkServer'
    ,@srvproduct        = 'OracleTnsName'
    ,@provider          = 'MSDASQL'
    ,@datasrc           = 'OracleTnsName'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname        = 'OracleLinkServer'
    ,@useself           = 'False'
    ,@locallogin        = NULL
    ,@rmtuser           = 'user'
    ,@rmtpassword       = 'password'

今、次を使用して SQL Server から Oracle データベースのテーブルをクエリしようとしていますopenquery

select * from openquery(OracleLinkServer, 'select * from oracleTable')

しかし、エラーが発生します:

メッセージ 7399、レベル 16、状態 1、行 1
リンク サーバー「OracleLinkServer」の OLE DB プロバイダ「MSDASQL」がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。
メッセージ 7303、レベル 16、状態 1、行 1
リンク サーバー「OracleLinkServer」の OLE DB プロバイダ「MSDASQL」のデータ ソース オブジェクトを初期化できません。

リンク サーバーのプロパティを確認して [OK] をクリックすると、次のエラーが表示されます。

タイトル: Microsoft SQL Server Management Studio Express

「リンク サーバーは更新されましたが、接続テストに失敗しました。リンク サーバーのプロパティを編集しますか?」


追加情報:

Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.Express.ConnectionInfo)


リンク サーバー "OracleLinkServer" の OLE DB プロバイダ "MSDASQL" がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。リンク サーバー "OracleLinkServer" の OLE DB プロバイダ "MSDASQL" のデータ ソース オブジェクトを初期化できません。(Microsoft SQL Server、エラー: 7399)

ヘルプについては、http: //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.5000&EvtSrc=MSSQLServer&EvtID=7399&LinkId=20476をクリックしてください。


ボタン:

&はい

&いいえ

助けてください!

ありがとう

4

3 に答える 3

1

リンクサーバーが正常に追加された場合は、が不要になりますOPENQUERY。次のように、リンクされたサーバー名を修飾名の最初の部分として含めることができます。

SELECT * FROM OracleLinkServer.database.schema.table

どのパーツが必要かはわかりませんが、ドットが重要です。最初にこれを試してください:

SELECT * FROM OracleLinkServer...oracleTable
于 2012-07-03T11:19:36.267 に答える
0

変化する

,@provider = 'MSDASQL'

,@provider = 'MSDAORA'
于 2016-09-22T11:27:49.160 に答える