trapemiyaの日記

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

SQL Server

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

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

【SQL Server】TRANSLATE的な関数を作ってみる

SQL Server 2017からTRANSLATE関数が導入されたことはご存じだろうか? Oracleなんかには以前よりあったから、よほど要望が強かったんでしょうね。 で、実際にTRANSLATE関数を使いたいけどSQL Server 2016以前が本番環境で動いていることもまだまだたくさん…

OPENQUERYの結果を変数に入れる

OPENQUERYの結果を変数に入れるには、次のようにOUTPUTを付けた変数を定義し、それに渡します。 declare @rowcnt int; set @sqlwk = 'select @rowcnt = count(*) from openquery(edpsrd, '' select 契約番号 from mine.dbo.契約テーブル where 契約番号 = ''…

【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 スキーマ名を省略したらアクセスできなくなった

以下のような簡単なSQLがアクセス出来なくなった。 select * from テーブルA 「オブジェクト名 'テーブルA' は無効です。」といったエラーが出る。以下のようにスキーマ名を付けるとちゃんとアクセスできる。 select * from hoge.テーブルA もちろん、ア…

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

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

【SQL Server, SQL】削除フラグのあるテーブルの抽出条件 [初心者向けネタ]

あるレコードを表示したくなくて、削除フラグとか非表示フラグなんかが定義してあるレコードがよくあると思うんだが、そんなテーブルの抽出条件はcase句を使って以下のように簡単に書ける。 ちょっとしたTipsで知っている人も多いと思うが、意外に知らない人…

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…

SQL Server Management Studio クエリーウインドウのタブを切り替えた際にウインドウの内容が更新されないことがある場合の対処方法

新しいPCにSQL Server Management Studio (SSMS)のv.18.4を入れて初めて使ってみたのがだが、クエリウインドウのタブを切り替えた際に、たまに画面が更新(リフレッシュ)されないことがある。ググると、 SQL Management Studio 18 Screen Refresh Problem h…

SQL ServerのNプレフィックス

今から約10年ほど前に、SQL ServerのNプレフィックスについて旧MSDNフォーラムに投稿しましたが、今はアクセスできなくなっていますので、以下に載せておきます。当時の原文のままです。なお、当時の私のハンドル名はMIYAでした。 ーーーーーーーーーーー…

hierarchyid型をTableAdapterでFillするとこけるクライアントがある。【その2】

hierarchyid型をTableAdapterでFillするとこけるクライアントがある http://d.hatena.ne.jp/trapemiya/ の続き。 Microsoft SQL Server 2008 用 Feature Pack、2009 年 4 月 http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b…

hierarchyid型をTableAdapterでFillするとこけるクライアントがある。

Click Onceでアプリケーションの配布をテスト的に行ったのですが、アプリケーションがこけるクライアントと正常に動作するクライアントがありました。 なんで〜と思って調べたところ、どうもTableAdapterのFillで例外を発している。正常に動作するマシンは基…