OpenQueryでSQLServerとOracleを同期する。
今のプロジェクトでSQLServerのデータをOracleにゆるーく同期するという要件が出てきた。このため、SQLServerのトリガーで、OracleにOpenQueryを投げることにしたのだが意外なところではまった。DataSpider使えよという突っ込みはつらいのでやめてください。
まず、OpenQueryでエラーが起きた場合にTriggerだけCommitというのができない。このため、エラーが起きたらSQLServer側もロールバック。
また、Char型の列に日本語を突っ込んだ時にOracle側で桁数が大きいとエラーが出る。データ型の定義は両方同じだし、Triggerで突っ込むときにTrimしてみても同じ現象。どうやら、メタデータを読んで判断しているみたいで、Oracleのデータ型をvarcharにすると無事解決。