Necromaning:
ถ้าคุณไม่ต้องการใช้มุมมอง SQL-Server 2000 (เลิกใช้แล้ว) ให้ใช้สิ่งนี้:
DECLARE @Command NVARCHAR(MAX)
SET @Command = N'ALTER AUTHORIZATION ON DATABASE::<<DatabaseName>> TO <<LoginName>>'
SELECT @Command = REPLACE
(
REPLACE(@Command, N'<<DatabaseName>>', QUOTENAME(SD.Name))
, N'<<LoginName>>'
,
QUOTENAME
(
COALESCE
(
SL.name
,(SELECT TOP 1 name FROM sys.server_principals WHERE type_desc = 'SQL_LOGIN' AND is_disabled = 'false' ORDER BY principal_id ASC )
)
)
)
FROM sys.databases AS SD
LEFT JOIN sys.server_principals AS SL
ON SL.SID = SD.owner_sid
WHERE SD.Name = DB_NAME()
PRINT @command
EXECUTE(@command)
GO
ยังป้องกันข้อผิดพลาดบนฐานข้อมูลหรือผู้ใช้ที่มีชื่อแปลก ๆ และยังแก้ไขข้อบกพร่องหากไม่มีผู้ใช้เชื่อมโยง (ใช้การเข้าสู่ระบบ sa)