【SQLServer】よく使用するSQLをまとめてみた

SQLSQL Server
この記事は約4分で読めます。
スポンサーリンク

保守や調査などをしていてテーブルの全体の情報を知りたい場合や、システム切替などで本当にSQLが変更されたかなどを確認したいときによく使うSQLを備忘録として書いておきます。

SQL Serverのバージョンを知りたい場合

今接続しているSQLServerのバージョンやSQLServerのパッチレベルがどこまで適用されているかを知りたいときによく使います。

SELECT @@version

すべてテーブル一覧と列名を取得するSQL

テーブル定義などで、きちんとテーブル定義が追加されていることを確認したり、今現在存在しているテーブルをしりたいときなどに使うと便利です。除外したいテーブルがある場合はWHERE文でNOT Like やNOTで書いてやれば除外してくれます。

--テーブル一覧
select * from 
( 
SELECT 

(select name from sys.schemas where T.schema_id = schema_id) スキーマ, 
T.name AS 表名, 
C.column_id AS 列番, 
C.name AS 列名, 
Y.name AS 型, 
CASE 
WHEN Y.name IN ('nvarchar', 'nchar') THEN C.max_length / 2 
WHEN C.precision = 0 THEN C.max_length 
ELSE C.precision 
END AS 桁, 
C.scale AS 小数桁, 
C.max_length as [サイズ(バイト)], 
C.is_nullable AS Null可, 
object_definition(C.default_object_id) AS デフォルト値, 
(select COUNT(*) from sys.index_columns ic where ic.column_id = C.column_id and C.object_id = ic.object_id 
and exists (select * from sys.key_constraints kc where kc.type = 'PK' 
and kc.parent_object_id = T.object_id 
and kc.unique_index_id = ic.index_id )) as [PK], 
ep.value as 説明 

FROM sys.tables AS T INNER JOIN 
sys.columns AS C ON T.object_id = C.object_id INNER JOIN 
sys.types AS Y ON C.system_type_id = Y.system_type_id AND C.user_type_id = Y.user_type_id left OUTER JOIN 
sys.extended_properties AS ep ON C.object_id = ep.major_id and C.column_id = ep.minor_id 
) z 
WHERE z.表名 NOT LIKE ('除外したいテーブル') 
order by z.スキーマ, z.表名, z.列番

共通関数の最終更新日を確認したいとき

以下のSQLで現在登録されている共通関数の一覧を更新日順に表示してくれます。共通関数の変更などがあった場合に、使用すると確認に便利です。modify_dateが最後に定義を変更した日の値を持っているので変更漏れがないか確認したいときに便利です。

--共通関数
SELECT name, 
type, 
create_date, 
modify_date 
FROM sys.objects 
WHERE type = 'FN' 
ORDER BY modify_date

ストアドプロシージャーの一覧と最終更新日を確認したいとき

ストアドプロシージャーの一覧を表示したい場合は以下のように書きます。

--ストアド 
SELECT name, 
create_date, 
modify_date 
FROM sys.objects 
WHERE type = 'P' 
ORDER BY modify_date

登録されているViewの一覧と最終更新日を確認したいとき

Viewの場合は以下の通りです。

--View

SELECT name, 
create_date, 
modify_date 
FROM sys.objects 
WHERE type = 'V' 
ORDER BY modify_date

sys.objectsテーブルは、色々な情報をもっているので知っているとかなり便利です。

 

コメント

タイトルとURLをコピーしました