web-dev-qa-db-ja.com

SQL Server 2012のスキーマ名と所有者を一覧表示する

すべてのデータベースのすべてのテーブル名、列名、スキーマ名、所有者を一覧表示したいので、以下のコードを書きました。スキーマ所有者の詳細を取得してクエリに追加する場所がわからない。助けてください 。

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]
15
user3844877

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
31
GarethD

SQL Serverで動作する、よりポータブルなソリューションを次に示します。

SELECT schema_name, schema_owner
FROM information_schema.schemata
10
Gili