0
我一直在玩一些涉及元數據的查詢(希望我正在使用正確的術語),我做的一件事是返回所有表由當前用戶創建,使用數據庫。SQL:用sysobjects代替sysobjects代碼
這是腳本:
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的向後兼容性,並且必須使用sys.objects
代替。那麼,我試圖更改代碼,但是sys.objects
沒有與用戶相關信息的列(sysobjects
的列爲uid
)創建了列出的對象。
如何將sysobjects
替換爲sys.objects
?
在列'Table_Owner_User_Id'我只得到'NULL'。根據文檔,並考慮到我們只是檢索表,這意味着沒有特定的所有者(並且所有權默認情況下轉到'dbo')。謝謝!! – Jazz
正確。這就是爲什麼我們使用'COALESCE()'函數返回表的'principal_id',或者如果缺少,則使用模式的'principal_id'。 – Serge