- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-03-12T05:32:13+00:00","default:admin","admin")
#author("2021-05-19T00:54:03+00:00","default:admin","admin")
-テーブルの特定の位置にカラムを追加する ... SQL Serverではできない!ダサッ!
--[[SQL ServerのT-SQLでテーブルの特定の位置にカラム (列、項目) を追加する:https://urashita.com/archives/13652]]
--SQL Management Studioでやるしかない
*実行SQL [#v2885d29]
-[[sys.dm_exec_sql_text (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sql-text-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15]]
-[[sys.dm_exec_query_stats (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15]]
-[[現在実行中のSQLを調べる:https://haradago.hatenadiary.org/entry/20130325/p1]]
-[[SQL Server で実行された SQL を SQL で取得する方法:https://www.projectgroup.info/tips/SQLServer/MSSQL_00000042.html]]
-現在実行中のSQLを表示
select sql.text as クエリ,
db.name as DB,
req.session_id,
req.status,
req.command,
(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
-指定日時以降に実行されたSQLを表示
SELECT st.text
,last_execution_time
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE last_execution_time >= '2020/03/12 12:00:00'
ORDER BY last_execution_time
-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;
*テーブル有無 [#h2795c39]
-[[【SQL Server】テーブルの存在チェックするやり方を解説します:https://www.tairax.com/entry/Microsoft-SQL-Server/Check-existence-of-table]]
IF OBJECT_ID (N'テーブル名', N'U') IS NOT NULL
「テーブルが見つかったときの処理」
ELSE
「テーブルが見つからなかったときの処理」
-OBJECT_ID関数に指定する引数は
--第一引数:オブジェクト名
--第二引数:オブジェクトタイプ
-第二引数に【N'U'】を指定する理由は、【N'U'】がテーブルのオブジェクトタイプのため
*Tips [#ka23c672]
-[[複数の列で in 句を使いたい:https://odashinsuke.hatenablog.com/entry/2015/12/13/103651]]
**変数 [#ca325574]
-[[SQL Server: 変数にSELECTした結果を代入する方法:https://ameblo.jp/hiro628/entry-11025756474.html]]
-[[sql-server – クエリ結果を変数に格納し、それをストアドプロシージャ内で変更する:https://codeday.me/jp/qa/20190301/293218.html]]
-[[SELECT した結果をカーソルを使用してループ処理をする方法:https://www.projectgroup.info/tips/SQLServer/SQL/SQL000028.html]]
**SQL [#e8512fe6]
***データコピー [#e56be143]
insert [コピー先DB].dbo.[テーブル名]
select [コピー元DB].dbo.[テーブル名]