trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

Oracle

SQL Server リンクサーバーへアクセスする際のライセンスは?

SQL Serverでリンクサーバーとして設定してあるデータベースへのアクセスのライセンスが気になって確認してみた。日本マイクロソフトと日本オラクルに確認したところ、SQL ServerもOracleも、間接アクセスであっても直接アクセスと同等のライセンスが必要と…

【SQL ServerからOracleへのリンクサーバー】列’xxx’に必要なデータ長に一致しないデータが返されました。必要な (最大) データ長は xxですが、返されたデータ長は xx です。

SQL ServerからOracleへのリンクサーバーを設定している状態で、例えば以下のSQLを実行すると次のエラーが出る。 select * from openquery(edpstv, 'select ''有'' as 有無 from BSS.契約 ') リンク サーバー 'edpstv' の OLE DB プロバイダー 'OraOLEDB.Ora…

OracleとSQL ServerのSQLを同時に書いているとついnullの処理でうっかりしてしまう・・・

SQL Serverで、nullの場合に他の値に置き換える関数は、isnull。Oracleは、nvl。 まぁ、これは簡単なことなんだが、nullの時に空文字に置き換えようと、SQL Serverで以下のように書いていると isnull(A項目, '') つい、Oracleでも、 nvl(A項目, '') と書い…

SQL ServerからOracleへのリンクサーバーのパフォーマンス

Oracleへのリンクサーバーのテーブルを読む際に、とんでもなく遅いパフォーマンスのテーブルに出会った。 1つのテーブルから2件のレコードを読むだけなのに1分20秒もかかる。 一方で、6つぐらい外部結合していても数秒で表示されるクエリもある。 レコー…

【Oracle】NVL関数ではまる。NZLから返される値と比較する場合、末尾の空白を考慮する必要がある

NVL関数は、レファレンスによると、NVL( 文字列 , 変換文字列 ), 文字列 がNULLの場合は、変換文字列を返します。とある。いたって簡単かつ便利な関数である。 ところがである。これにchar(2)などの固定長の項目を適用すると、末尾の空白を含めて比較しなけ…

OracleのSQLで、ERROR ORA-00907: 右カッコがありません。

久しぶりにOracleのSQLを書いていたのだが、以下のSQLで、 「ERROR ORA-00907: 右カッコがありません。」なんて謎のエラーが出た。 #下記のSQLは実際のSQLではなく、テーブル名や項目名を変え、かつ簡略化するために手動で書き換えてますので タイポとか…

SQLからOracleサーバーへのリンクサーバーでwhere句の条件を変えるとなぜか結合する際のキーが一致しなくなる

SQL ServerからOracleをリンクサーバーにしてアクセスしているのだが、またまた不思議なことがあった。以下のようなSQLを書いたのだが、なぜかユーザー名が表示されない。もちろんデータもあるし、SQLも間違いない。 実際、Oracle上で試したが問題なかった。…

SQL ServerからOracleへのリンクサーバーでbitは使えない!?

SQL ServerからOracleのリンクサーバーへ以下のストアドプロシージャを実行したところ、 EXEC sp_executesql @sqlwk, N'@タイム抽出 bit,@抽出期間開始 char(8), @抽出期間終了 char(8), ・・・・・・・ 以下のエラーが表示された。 リンク サーバー "HogeSe…