- - PR -
SQLServerとOracleをリンクさせる
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-07 19:33
お世話になっております。
現在、MSDEとOracle10g StandardEditionを使って データの連携をするシステムを構築しております。 具体的には、あるシステムがMSDEにデータを書き込んだ時点で、 同じデータをOracleの同一構成のテーブルに書くという仕組みになります。 環境は、 Windows 2003 Server Standard Edition MSDE 2000 SP3 Oracle Standard Edition one 10g となります。 Microsoftのサポートページを見ながら、DBのリンクを作成し、 SQLServerのEnterpriseManagerから、OracleのテーブルをSELECT でデータを取得したり、INSERTでデータの挿入をするところまで できました。 で、次に、該当のテーブルにトリガーを作成し、Oracleの テーブルに同じデータをINSERTする文を書き設定しました。 次に、SQLServerEnterpriseManagerのSQLペインから、INSERT文を 発行すると、トリガーも正常に動作し、Oracleのテーブルにも データがINSERTされているのですが、テストでAccessからODBC経由で接続して、 テーブルを開き、データの追加をすると [Microsoft][ODBC SQL Server Driver][SQL Server]OLE DB エラー トレース[OLE/DB Provider 'MSDAORA' ITranscationJoin::JoinTranscation returned 0x8000d048]。 [Microsoft][ODBC SQL Server Driver][SQL Server]OLE DB プロバイダ 'MSDAORA'は分散トランザクションを開始できなかったので、要求した操作は実行されませんでした。 と言われてしまいます。 イベントログには、何も残っていません。 http://support.microsoft.com/kb/816633/ja に掲載されている事項も試したのですが、ダメでした。(これをやる前は、イベントログに該当のメッセージが記録されていたが、権限設定を変更してからでなくなった) なにが悪いのかの見当がつきません。 不思議なのは、INSERT文を発行する文には問題ないのに、ソフトウェアを経由すると物の見事に失敗してくれるところです・・・。 なにか、ヒントなどないでしょうか? どんな小さな事でも結構です。是非よろしくお願い致します。 |
|
投稿日時: 2005-01-08 02:40
Dr.Doraemonさん、こんばんは。
取り敢えず、↓この辺を。 http://support.microsoft.com/default.aspx?scid=kb;ja;280106 上記ドキュメントにもあるとおり、リンク サーバを用いて Oracle のデータを更新する場合には、分散トランザクション・コーディネータ関係のレジストリを弄る必要がありますが、その辺はOKでしょうか? |
|
投稿日時: 2005-01-08 13:41
きくちゃん様
深夜にもかかわらず、ご返答ありがとうございます。 ご指摘頂いたページは私も参考にさせて頂きました。 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI] 配下のレジストリは、Oracleの10g用に変更しております。 不思議なのは、SQLServer EnterpriseManagerの中でINSERT文を発行する分には正常にどうするのに、Access経由やEnterpriseManagerのグリッドからデータを入れるとエラーが出る理由がわかりません。 MSDTC周りだとは思うのですが・・・。 |
1