SQLの進捗状況が把握可能なライブクエリ統計について
本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。
SQL Server 2014以降で使えるようになったらしい、ライブクエリ統計を使ってみました。
処理の進捗状況が分かるらしいです。
使い方は簡単で、メニューの「ライブクエリ統計」のボタンを押して、有効化して、SQLを実行するだけです。
以下の場所です。
ライブクエリ統計を有効化した状態で、SQLを実行してみました。
こんな感じで、SQLの進捗状況が表示されました。
「TairyouData_01」テーブルと「TairyouData_02」テーブルには3,000件ずつデータを入れてます。
そして、この2つのテーブルを内部結合させています。
上記の状態だと、「TairyouData_01」テーブルのTable Scanは完了していて、「TairyouData_02」テーブルのTable Scanは「17%」完了しているという事になりますね。
「TairyouData_02」テーブルから読込んで、「TairyouData_01」テーブルとINNER JOIN(内部結合)もしていて、これも「17%」が完了しています。
実行時間が長いSQLを実行する時に、処理の進捗状況を把握するのに役立ちそうです。
インテリセンスのローカルキャッシュの更新について
本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。
SQL Server Management Studioでテーブルを追加した場合、直ぐにインテリセンスに表示されない事が有りますよね。
以下の様な感じです。「TairyouData_02」テーブルが選択候補に表示されていません。
こういう時は、[メニュー]-[編集]-[IntelliSense]-[ローカル キャッシュの更新]を選択します。
または、Ctrl + Shift + Rのショートカットキーを押下します。
すると、「TairyouData_02」テーブルが選択候補に表示されるようになります。
JSSUG(Japan SQL Server User Group):第8回 SQL Server 2017勉強会の資料公開
■JSSUG(Japan SQL Server User Group)主催:第8回 SQL Server 2017勉強会
「SQL Operations Studio」についてです。
speakerdeck.com
JSSUG(Japan SQL Server User Group):第5回 SQL Server 2017勉強会の資料公開
■JSSUG(Japan SQL Server User Group)主催:第5回 SQL Server 2017勉強会
「トランザクション分離レベルの違いによるSQL Serverの動作の違い」についてです。
speakerdeck.com
INSERT文でIDENTITYが指定されている列に明示的な値を挿入する方法
本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。
IDENTITYが指定されている列に明示的な値を挿入する方法です。
テーブル定義はこんな感じです。
CREATE TABLE [dbo].[Table_1]( [ID] [int] IDENTITY(1,1) NOT NULL, [Column1] [char](10) NULL, [Column2] [char](10) NULL ) ON [PRIMARY]
上記のテーブルの[ID]列に対して、INSERT文で明示的に値を指定すると以下の様なエラーになります。
これを、回避するには、「SET IDENTITY_INSERT [データベース名].[スキーマ名].[テーブル名] ON」を実行して、「IDENTITY_INSERT」を有効にします。
すると、以下の様にエラーが起きなくなります。
設定を戻すには、「SET IDENTITY_INSERT [データベース名].[スキーマ名].[テーブル名] OFF」を実行して、「IDENTITY_INSERT」を無効にします。
元に戻すと、また、エラーが起きるようになります。
SQLやコマンドを指定した回数実行する方法
本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。
SQLやコマンドを回数を指定して実行する事が出来るみたいです。
以下の通りとなります。
■コマンド
「GO [count] 」
※[count]には、正の整数を指定します。
そうすると、直前のSQLやコマンドが複数回実行されます。
■実行例
こんな感じで2回実行されます。
トランザクションログファイルのサイズ縮小について
本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。
忘れそうになるので、備忘録として残しておきます。
トランザクションログファイルのサイズを縮小するには、以下のコマンドを使います。
第一パラメータには、トランザクションログファイルの論理名を指定します。
第二パラメータには、ファイルサイズをMB単位で指定します。
■コマンド
「DBCC SHRINKFILE('DemoDatabase_log', 0)」
指定するトランザクションログファイルを調べるには、以下のSQLを実行します。
■SQL
「SELECT * FROM sys.database_files」
すると、以下の様な実行結果が得られます。
復旧モデルが完全の場合は、ファイルサイズが圧縮されない場合が有る(?)ので、以下のコマンドでトランザクションログファイルを切捨ててから「DBCC SHRINKFILE」を行うと良いかも。(良く分かっていないですが、「DBCC SHRINKFILE」と「BACKUP LOG」を交互に繰返し実行しないと、ファイルサイズが初期サイズまで戻らない事が有る気がします。)
■コマンド
「BACKUP LOG [DemoDatabase] TO DISK = N'NUL'」
※[DemoDatabase]には、データベース名を指定する。
SQL Serverを使っていると、トランザクションログの上限サイズオーバーになる事が有るので、まとめてみました。