かざいむ日誌

IT関係で知ったことなどを記事としてあげていきます。内容に不備や質問などあればぜひコメントをよせてください。

OpenQueryでSQLServerとOracleを同期する。

今のプロジェクトでSQLServerのデータをOracleにゆるーく同期するという要件が出てきた。このため、SQLServerのトリガーで、OracleにOpenQueryを投げることにしたのだが意外なところではまった。DataSpider使えよという突っ込みはつらいのでやめてください。

まず、OpenQueryでエラーが起きた場合にTriggerだけCommitというのができない。このため、エラーが起きたらSQLServer側もロールバック

また、Char型の列に日本語を突っ込んだ時にOracle側で桁数が大きいとエラーが出る。データ型の定義は両方同じだし、Triggerで突っ込むときにTrimしてみても同じ現象。どうやら、メタデータを読んで判断しているみたいで、Oracleのデータ型をvarcharにすると無事解決。

早く、SQLServerからOracleに移行したい、、、。