SQL Serverデータベースのメタデータ情報を提供するビューです。 これらのビューには、データベースオブジェクトに関する情報が含まれています。 これらのビューにアクセスすることにより、データベースオブジェクトに関する情報を取得できます。
sys.objectsから継承されたカタログ ビューなどで以下が存在する
ビュー | 内容 |
---|---|
sys.objects | データベース内のすべてのオブジェクトに関する情報 |
sys.columns | テーブルやビューの各列に関する情報 |
sys.indexes | インデックスに関する情報を提供 |
sys.databases | サーバーに存在するすべてのデータベースに関する情報を提供 |
sys.schemas | データベース内のスキーマに関する情報を提供 |
sys.sysusers | データベース内のユーザーに関する情報 |
sys.syslogins | SQL Serverインスタンスに登録されているログインに関する情報 |
sys.sysprocesses | 現在実行中のプロセスに関する情報 |
sys.dm_exec_sessions | 現在接続されているセッションに関する情報 |
sys.dm_exec_requests | 現在実行中のクエリに関する情報 |
SQLで特定テーブルやストアドプロシージャを任意のスキーマにフィルターしたり、抽出条件を設定するクエリ
--特定条件でフィルターしたオブジェクトの取得
select
s.schema_id
,s.name as schema_name
,t.name as table_name
,t.object_id
from sys.schemas s inner join sys.tables t
on t.schema_id = s.schema_id
where -- フィルターを行いたい条件を追加していく
t.type = 'U' --ユーザー定義のテーブル
AND s.name = '任意' --作成したスキーマ名
AND t.modify_date > DATEADD(DAY,-7,GETDATE()) --過去7日に更新された
SQLで特定テーブルやストアドプロシージャを削除したい場合などにスキーマでフィルターしたり抽出条件を設定するのに利用できそうなクエリ
--DBのIDよりDB名を取得してテーブルのDROP文を作成
--database_idの確認用
select database_id,name as db_name from sys.databases
--database_idを指定してDROP文を生成
select
'DROP TABLE [' + DB_NAME(任意のdatabase_id) + '].[' + s.name + '].[' + t.name +']' AS 'DROPクエリ'
from sys.schemas s inner join sys.tables t
on t.schema_id = s.schema_id
SQLで更新したテーブルやストアドの反映時間を確認したり、対象のオブジェクトを削除するためのクエリとして利用もできそう。
本コンテンツはプロモーションが含まれます。