私は、メタデータを含むいくつかのクエリを使用して遊んできましたが(うまくいけば、私は正しい用語を使用している)、すべてのテーブルを返すことでしたデータベースを使用して、現在のユーザーによって作成されます。SQL:sysobjectsでコードをsys.objectsで置き換える
これはスクリプトです:
SELECT so.name as [Table], su.name as [User]
FROM sysobjects so
INNER JOIN sysusers su
ON so.uid = su.uid
WHERE xtype = 'U' -- user-defined table
AND su.name=USER_NAME()
その後、私はsysobjects
が唯一のSQL Server 2000との下位互換性を維持するためのシステムであり、もう1つは代わりにsys.objects
を使用する必要があることを読みました。さて、コードを変更しようとしましたが、sys.objects
には、リストされたオブジェクトを作成したユーザー(sysobjects
の列にはuid
)に関する情報の列がありません。
sysobjects
を上記のsys.objects
に置き換えるにはどうすればよいですか?
:
は、この文字列で検索してください。ドキュメントによると、テーブルを取得しているだけなので、これは特定の所有者がいないことを意味します(所有権はデフォルトで 'dbo'に行きました)。ありがとう!! – Jazz修正します。そのため、 'COALESCE()'関数を使ってテーブルの 'principal_id'を返します。もし見つからなければ、スキーマの' principal_id'を返します。 – Serge