SQL Server 2005

SQL Server 2005

SQLServerで、バックアップ先のアーカイブテーブルにあって、本テーブルに無いデータを抽出するSQL

複数列をキーにしている場合、IN()は使えないのでexistsを使う。where not exists ()の中で「SELECT *」を指定していますがあまり意味はなく、アーカイブテーブルと本テーブルのテーブル定義が違っていてもexists...
SQL Server 2005

データの上昇角度を求めるSQL

ビッグデータシステムなど、大量のデータを解析する場合、JAVAやC#では計算元のデータを読込むだけで膨大な時間がかかってしまうので、最近では数十テラのデータであってもDBにインポートしてから、SQLで分析するのが主流になっています。以下は、...
SQL Server 2005

SQLServer で統計情報を固定する

DB処理で最適なインデックスが使われないという、Oracle DBでよく問題になるDBチューニングテーマ。統計情報を固定することで解決する手法は、SQLServer ではできないと思い込んでいましたが、SQLServer にもありました、統...
SQL Server 2005

SQLServer のトランザクションログは肥大化する

SQLServerのトランザクションログは、使われていない領域をうまく再利用してくれないのか、SQLServer 2008、SQLServer 2012 とバージョンを問わず、徐々に、どこまでも拡張していきます。レポート⇒標準レポート⇒ディ...
SQL Server 2005

SQLServerは、断片化率が高くなると、SQLが実行される際、パラレル処理されなくなり、極端に処理性能が低下します

ストレージを増設する前、12TBのストレージで、10TBのDBを運用していたので、1ヵ月に1回程度、SQLServerのDB Shrinkを実行していました。その影響で、メインのテーブルとインデックスを中心に、断片化率が99%に達していまし...
SQL Server 2005

SQLServerで、SQLがパラレル処理されない場合は、実行プランを丸ごと固定する

SQLServerは、SQL処理時間がcost threshold for parallelismの値(デフォルト5秒)を超えるような場合、1つのSelect文であっても、シリアルではなくパラレルで処理します。パラレル処理されれば1分程度で...
SQL Server 2005

SQLServer トレースフラグの有効性

DBサイズがテラバイトを超えて来ると、DB全体の統計情報を更新するだけで、1日以上かかってしまい、定期的な統計情報の更新を諦めていましたが、統計情報が更新されない事で、特定のSQLが極端に遅くなる現象が発生しました。SQLを分解し、極端に処...
SQL Server 2005

SQLServerで、ジョブ名からジョブを削除するSQL

SQLServer Management Studio から、SQL Server Agent に作成したジョブを右クリックし、「DROP To」でDROP文を生成すると、JOB ID を元にしたDROP文が生成されますが、JOB ID は...
SQL Server 2005

SQLServerの最新パッチ

SQLServer 2008 R2 SP2 の最新パッチがどれなのかは、このブログで確認できる。2013/2/24時点の最新パッチ(累計的な更新プログラム)はCU#5。SQL Release Services Blog
SQL Server 2005

SQLServer で TO_CHAR と同じことをするには

SQLServer で TO_CHAR と同じことをするには、CONVERTを使います。int型の「販売金額」を、小数点付きの文字列で返す場合に、CONVERTを使うと以下のようになります。 SELECT CONVERT(VARCHAR, ...