すべてのデータベースのすべてのテーブル名、列名、スキーマ名、所有者を一覧表示したいので、以下のコードを書きました。スキーマ所有者の詳細を取得してクエリに追加する場所がわからない。助けてください 。
select c.name as colomn_name , t.name as table_name , s.name as schema_name
from sys.columns c
inner join sys.tables t on c.object_id=t.object_id
INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id]
列principal_id
in sys.schemas
にはスキーマの所有者のIDが含まれているため、名前を取得するには単純に使用できます。
USER_NAME(s.principal_id) AS Schema_Owner
または、詳細情報が必要な場合は、sys.sysusersに参加できます。
SELECT s.Name, u.*
FROM sys.schemas s
INNER JOIN sys.sysusers u
ON u.uid = s.principal_id
SQL Serverで動作する、よりポータブルなソリューションを次に示します。
SELECT schema_name, schema_owner
FROM information_schema.schemata