SQLServer
インデックスを追加するときに断片化が大きいとインデックスの再構築、再構成で断片化を減らせる。 再構成と再構築の違いは大きいところだと、 再構築がひとつのトランザクションでインデックスを完全に再作成するのに対して、再構成は処理単位ごと (処理単…
お客様のテスト環境のデータベースサーバーの容量が少なくなってきたので、データベースのバックアップファイルが保存できなくなってしまった。 SQLServerではデータベースをバックアップする際、圧縮してバックアップをとれる。 圧縮することによって60GBあ…
SQLServerのバージョンアップの検証で、プロファイラの値をバージョンアップ前と後で比較を行った。 DURATIONという処理時間の値がバージョンアップ後の方が大きくなった。 サーバーのスペックは上がっているのだが… 原因分からずなので引き続き調査が必要。
テーブルの定義を変更しようとすると警告メッセージが表示され、変更が保存出来ない現象があった。 調べてみると、SQLServerのオプションの設定で変えられることが分かった。 2012より前のバージョンではそんなことなかったと思うのだが。 参考URL https://s…
原因不明の更新処理が行われていたため、 調査が必要になった。 そこで発行したクエリをログに出力できないかを調べたところ、 トレースフラグの設定で出力できることが分かった。 デフォルトではログには出力されないので、設定することが必要。 参考URL SQ…
ストアド内にprint文で長いSQL文を出力した場合に切れてしまう現象がある。8000バイトを超えると切れるそう。https://msdn.microsoft.com/ja-jp/library/ms176047(v=sql.120).aspx4000文字ごとに分割してselect文で表示させるようにした。select '@strSQL_SU…
データベースのテーブルの作成日を見たい場合はショートカットキーのF7で 一覧が表示される。 SQLServer2005まではデフォルトで表示されていた記憶があるが、 SQLServer2008以降だと表示されていないため調べた。
システムのレスポンスが急激に遅くなる現象があり、 トランザクションの分離レベルが影響しているのではないかと思い調べた。 調べる方法は クエリでDBCC USEROPTIONを実行 実行結果の「iso level」に分離レベルの規定値が出力される 規定値は「read committ…
テーブルのフィールド名を変更する際はsp_renameを使用すると便利 sp_rename 'TableA.FieldA', 'FieldB', 'COLUMN'
約1000万レコードのテーブルに対してselectしている処理で、タイムアウトが発生するため、インデックスを作成した。 作成する際はSQLの条件に使用しているフィールドをインデックスの対象にする。 3分以上かかっていた処理が10秒程度に改善された。 処理が…
システムのバージョンアップで SQLServer2000のバックアップファイルをSQLServer2014に復元する必要があったので、その手順。 直接SQLServer2014に復元はできないのでSQLServer2008に復元する。 復元後、復元したデータベースのプロパティ→オプション→互換性…
トレース フラグ 1204(DBCC TRACEON (1204,-1))を有効にするとデッドロックが発生した場合にログが吐き出されるようになるが、それを解析するとなるとなかなか難しい。 こちらを参考にした。 http://msdn.microsoft.com/ja-jp/library/aa937573(SQL.80).aspx…
原因不明のデッドロックが発生するため、原因を探るための情報としてデッドロック時にログを吐き出す方法を調べた。 以下のコマンドを実行するとデッドロック時に ログが吐き出されるようになる。 DBCC TRACEON(1204, -1) エラーログは以下の場所に吐き出さ…
キーの重複エラーが発生し、キーの追加を行った (本来は重複が発生しないように設計するべきだったが、考慮が足りず・・・) キーの追加をする際は、既存のキーを削除してから行う[注意点]キーを設定するフィールドのNull許可をしない設定を行う →これをやら…
テーブルの更新時に想定しない更新が行われたため、 テーブルの断片化が原因ではないかと思い、調査方法を調べた。 テーブルの断片化を調べる方法 use (データベース名)SELECT DB_NAME(s.database_id), OBJECT_NAME(s.object_id), s.index_type_desc, i.name…
SQLServerでシステム日付を取得するにはGetDate()を使用する それだけだとフォーマットが"2014-06-18 19:13:23.177"となるため、 YYYYMMDD形式に変換させる CONVERT(VARCHAR,GetDate(),112) HHMMSS形式に変換させる (':'が付くのでreplaceで除く) SELECT rep…
Bulk InsertでCSVを取込む処理で CSVの列が追加されたが、取込は行わないようにする 対応を行った。 参考にしたURL http://www.ilovex.co.jp/blog/system/softwaredevelopment/post-24.html
稼動しているシステムのあるテーブルのデータ量が多くなり、 データ取得に時間がかかっていたので、 インデックスを追加して改善を行いました。 分かりやすいページだったのでメモしておきます。 http://www.atmarkit.co.jp/ait/articles/0501/18/news097.ht…
SQLServerのオブジェクトエクスプローラからテーブルを開く際、"上位○○○行の編集"となっていて、全ての行を編集する事が出来ない。 初期設定がそのようになっているため、変更したい場合は ツール→オプション→SQLServerオブジェクトエクスプローラの 上位<n…
データ抽出処理で異常に時間がかかるときなどは、 プロファイラで確認すると原因がさぐれる。 プロファイラ上のCPU,Reads,Writes,Durationの各項目の 数値が高い場合は、そのストアドに原因があるかもしれない。 参考URL Microsoft TechNet ライブラリより h…
大量のデータの削除、追加を繰り返し行うと、データの断片化が起きる。 稼動中のシステムでデータ読み込み時に予期せぬエラーが発生したが、 断片化が理由だった。 インデックスの再構築を行うことで解決できた。 オブジェクトエクスプローラでテーブル→イン…
クエリの結果を選択し、右クリックでヘッダーつきでコピーをすれば行えるが、設定することで自動でヘッダーが貼り付くようになる。 ツール→オプション→クエリ結果→SQLServer→結果をグリッドに表示→結果のコピーまたは保存時に列ヘッダーを含めるのチェックボ…
ストアド内でprint文で変数の値を出力させたいとき、 変数の中身のバイト数によっては切り詰められてしまいます。 以下マイクロソフトMSDNより引用 (http://msdn.microsoft.com/ja-jp/library/ms176047.aspx) メッセージ文字列は、Unicode 以外の文字列の場…
--追加するキー項目のNULLを不許可にする ALTER TABLE [dbo].[TableA] ALTER COLUMN [FieldA] [varchar] (8) NOT NULL Go --キーを一旦クリアする ALTER TABLE [dbo].[ TableA ] DROP CONSTRAINT [PK_ TableA _1] Go --キー項目を再作成する ALTER TABLE [db…
ALTER TABLE テーブル名 DROP DF_TABLE_DEFAULT →デフォルト値設定 ALTER TABLE テーブル名 DROP COLUMN フィールド名 ※列を削除する際、デフォルト値の設定がされている時はその設定を削除しないと列を削除できない
ALTER TABLE 表名 ALTER COLUMN 列名 列定義 例)ALTER TABLE T_02_1 ALTER COLUMN POST_CODE CHAR(7)
DBCC CHECKIDENT (テーブル名, RESEED, 0) ※他の方法として・・・Truncate Tableを行えばオートナンバーは初期化される
データ読み込みのレスポンステストなどで 一度読み込むとキャッシュに残るので 正確なレスポンスが測れない。 その時はキャッシュのクリアを行う。 [記述方法] DBCC DROPCLEANBUFFERS
データベースの容量が大きくなった場合に、 ログファイルの削除と圧縮を行うと容量を減らせる。 本番環境ではログファイルを使用する事もあり、 削除などは簡単には行えないので、 テスト環境の場合に行う。 backup log DB名 with no_log dbcc shrinkfile(XX…
SQLServer2005をインストールしたが、 いろいろと上手くいかなかったので 注意点をまとめました。 ・クライアントのインストール時は「このコンピュータに全てインストールを選択す る」を行う。行わないとManegementStudioがインストールされない ・Window…