SQL Server

SQL Server 2000以下でストアドプロシージャだと遅くなる場合が

同じSQLでもストアドプロシージャにすると極端に遅くなる場合があります。 ずっと不思議に思っていましたが、パラメータの変数をWHERE条件に使っていた事が原因でした。(特にNULLで初期化)参考:Google Groups 上記サイトにありますが、例えば CREATE PROC…

タブと改行

SQL Server2000とDB2 7で確認。 制御文字 SQL Server DB2 正規表現だと タブ CHAR(9) CHR(9) \t ラインフィード CHAR(10) CHR(10) \r キャリッジリターン CHAR(13) CHR(13) \n 改行を無効化 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25515&…

日付の足し引き

普段、SQL Server 2000を主に使っているので、DB2でもdateaddみたいな関数でやるのかなぁとSQL本で調べていたら。 「それ、足す1デイでできますよ」と同僚からのお言葉。 DB2で ほんとかそれと思ってやってみたら、出来た。 select current timestamp as cu…

DBCPからコネクションの再接続

TomcatからSQL ServerにDBCPから接続していて、DBサーバだけ再起動したらコネクションエラーになった。自動的に再接続したい。validationQueryを設定してるのに。なんで再接続されないんだ?という相談があり、調べもの。 少々調べて、 http://jakarta.apach…

切り捨て、切り上げ、四捨五入(マイナス値は要注意)

SQLで、切り捨て、切り上げ、四捨五入は、全部round関数しかないと思ってました。 切り捨て FLOOR 引数nに対して、それ以下で最も大きい整数値 切り上げ CEILまたはCEILING 引数nに対して、それ以上で最も小さい整数値 四捨五入 ROUND 四捨五入 知らなかった…

JANコードをlike文で・・・

あるSQL Serverに、13桁のJANコードが入っています。float型で。 これを、like文で条件抽出したいとの事。 条件を、like '4912345%'として・・・ JAN like '4912345%' × cast(JAN as char(13)) like '4912345%' × cast(cast(JAN as bigint) as char(13)) lik…

with (nolock) で遅くなる?

職場で、とにかくselectにはwith(nolock)付けなさいという空気があるため一通り付けてはいるのだけど、with(nolock)付けるとやたら遅いSQLに遭遇。(SQL Server 2000) 実際にはDTSの中でデータコピーを行うだけのSQL。1秒に5件位しかコピーしてくれない・・…

小数以下の切り上げ

切り上げについて、SAK 図書館さん(http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj07_1.htm)に詳しく書いてありますが、SQL Server 2000にはtrunc関数がないのでround関数を使いました。 round関数は「四捨五入」か「切り捨て」しかできないので…

SQL Server2000のクエリアナライザにSet implicit_transactionsというオプションがあって・・・

クエリアナライザのオプション「接続のプロパティ」に、Set implicit_transactionsというのがあります。 これをONにしておくと、暗黙的にトランザクションが開始されます。 これですね。 http://msdn2.microsoft.com/ja-JP/library/ms187807.aspx 「insertと…

dtsrunコマンドの暗号化とパラメータ

SQL Server 2000でDTS作ってdtsrunコマンドで。 って便利なのですが、パスワードとか平のままでバッチコマンド化されてたりしたので・・・ 暗号化しました。 暗号化はdtsrunの/!Yオプションでできます。 詳しくは、マイクロさんのホームページへ → Microsoft…

Microsoft SQL Server Management Studio Express をインストールしてみた

良いな、これ。使ってるDBはSQL Server 2000だけど。 Management Studio を使うには SQL Server 2005 Express もインストールしないといけないという勘違いをしていて、今まで試していませんでした。 ダウンロードはこちらから → Download Microsoft SQL Ser…

SQL Server テーブルの存在確認

SQLServer会議室さん http://www7.big.or.jp/~pinball/discus/sqls/29827.html を参考に(というか、ほぼそのまま)・・・。 「example」テーブルの確認だったら・・・ if object_id('example') is not null select 'Found !' else select 'Not Found !'テー…

トランザクション分離レベル

詳しくは、 https://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.aspx http://www.atmarkit.co.jp/fnetwork/rensai/sql27/sql1.html なのですけど、長いので、自分用に要約して・・・ 非コミット読み取り(READ UNCOMMITTED) ダーテ…

排他とかIndex再構築とか

時間あるときに読む。 松本崇博 Blogさん 「パフォーマンスチューニング〜監視のコツ」資料あり dfltweb1.onamae.com – このドメインはお名前.comで取得されています。 @ITさん 排他制御の落とし穴を避けるインデックス設計 (1/3):Dr. K's SQL Serverチュ…

インデックスの再構築ってそんなに効くの?

他社が作ってるプログラムを、ただひたすらテストな日々。 ひとつタイムアウトになってしまう機能があって、 インデックスの再構築とやらで所要時間が5分の1に。 そんなに変わるもんなのか・・・!? 再構築って自分でやった訳ではないけど、 インデックス…

JDBCRealmで[Microsoft][SQLServer 2000 Driver for JDBC][java][java][メモ]Can't start a cloned connection while in manual transaction mode. が発生した時の対応

SQL Server2000にユーザー管理テーブルを作成してTomcatからJDBCRealmで認証を行おうとしたらエラー発生・・・。 Can't start a cloned connection while in manual transaction mode. ググッたら、キャッシュにしか情報が無かったのでメモしておきます。 ま…

テーブル構造の表示

SQL Server で、出来上がっているテーブルから 定義書を引っこ抜く(書き起こす)時など、 前は、EnterpriseManagerのデザインから写してました。 Excelにそのままコピー&ペーストできたらいいのになぁ。 と思っていたところで見つけたコマンド(スクリプト?)…

月初・月末を取得する

declare @year char(4) -- 年(設定用) declare @month char(2) -- 月(設定用) declare @from datetime declare @to datetime set @year = '2005' -- 任意の年を設定する set @month = '06' -- 任意の月を設定する -- 任意の年月の1日をfromに set @from = ca…