特定のキーワードを含むプロシージャを探す
特定のキーワードを含むプロシージャやファンクションを探したい時は以下のSQLで探せます。
SELECT t2.type, t2.name, t1.definition
FROM sys.sql_modules AS t1
JOIN sys.objects AS t2 ON t1.object_id = t2.object_id
WHERE t1.definition LIKE '%キーワード%'
ORDER BY t2.type, t2.name;
特定のカラムを含むテーブルを探す
特定のカラムを含むテーブルを探したい時は以下のSQLで探せます。
SELECT t1.name AS TableName, t2.name AS ColumnName
FROM sys.tables AS t1
JOIN sys.columns AS t2 ON t1.object_id = t2.object_id
WHERE t2.name LIKE '%カラム名%'
現在実行中のSQLを確認する
SELECT
r.session_id,
r.start_time,
TotalElapsedTime_ms = r.total_elapsed_time,
r.[status],
r.command,
DatabaseName = DB_Name(r.database_id),
r.wait_type,
r.last_wait_type,
r.wait_resource,
r.cpu_time,
r.reads,
r.writes,
r.logical_reads,
t.[text] AS [executing batch]
FROM
sys.dm_exec_requests r
CROSS APPLY
sys.dm_exec_sql_text(r.sql_handle) AS t
ORDER BY
r.total_elapsed_time DESC;
ロック状況を確認する
SELECT
resource_type AS type,
resource_associated_entity_id as entity_id,
( CASE
WHEN resource_type = 'OBJECT' THEN OBJECT_NAME( resource_associated_entity_id )
ELSE
( SELECT OBJECT_NAME( OBJECT_ID )
FROM sys.partitions
WHERE hobt_id=resource_associated_entity_id )
END) AS object_name,
request_mode AS request_mode,
request_type AS request_type,
request_status AS request_status,
request_session_id AS session_id
FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE'
ORDER BY request_session_id
セッション情報を確認する
SELECT * FROM sys.dm_exec_sessions
0除算エラーを回避する
SELECT で除算をする場合に、0除算エラーを回避するにはNULLIFを使用します。
SELECT t1.profit / NULLIF(t1.sales, 0) * 100 AS grossProfitRatio
FROM Sales AS t1
プロシージャやファンクションの更新時間を確認する
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = '名前'
ORDER BY name;