- テーブルの特定の位置にカラムを追加する ... SQL Serverではできない!ダサッ!
実行SQL †
- 現在実行中のSQLを表示
select sql.text as クエリ,
db.name as DB,
req.session_id,
req.command,
req.status,
req.wait_type,
req.last_wait_type,
req.wait_time,
req.total_elapsed_time,
--(req.total_elapsed_time/1000) as 経過時間_秒,
req.start_time as 処理開始日時
from sys.dm_exec_requests req cross apply sys.dm_exec_sql_text(req.sql_handle) sql,
sys.databases db
where db.database_id = req.database_id
- CPU の平均時間で順位付けされた上位5つのクエリに関する情報
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
原因究明・改善 †
とりあえず実行計画 †
- テキスト表示
- SQLの実行時に「SET STATISTICS PROFILE ON」文を追加
- グラフィカル表示
- メニューバー内「実際の実行プランを含める」アイコンをクリックしてONにしてからSQL実行
Clustered Index Update †
クエリタイムアウト †
suspended †
WAIT_TYPE †
LCK_M_U †
テーブル有無 †
IF OBJECT_ID (N'テーブル名', N'U') IS NOT NULL
「テーブルが見つかったときの処理」
ELSE
「テーブルが見つからなかったときの処理」
- OBJECT_ID関数に指定する引数は
- 第一引数:オブジェクト名
- 第二引数:オブジェクトタイプ
- 第二引数に【N'U'】を指定する理由は、【N'U'】がテーブルのオブジェクトタイプのため
Tips †
変数 †
SQL †
データコピー †
insert [コピー先DB].dbo.[テーブル名]
select [コピー元DB].dbo.[テーブル名]