Sql-Server

如何更改 SQL Server 中新數據庫的預設數據庫所有者?

  • March 11, 2022

我有理由更改我的電腦名稱(它在虛擬機中執行)。我有一個在重命名之前安裝的現有 SQLExpress 實例。

有一些功能會失敗,因為新數據庫仍然是使用舊所有者創建的。更具體地說,當我嘗試創建新的數據庫圖表時,出現以下錯誤。

無法獲取有關 Windows NT 組/使用者 ‘OLDNAME\user’ 的資訊,錯誤程式碼 0x534。(Microsoft SQL Server,錯誤:15404)。

我使用以下說明重命名伺服器:

sp_dropserver 'OLDNAME\SQLEXPRESS';
GO
sp_addserver 'NEWNAME\SQLEXPRESS','local';
GO
--  Restart Server
SELECT @@SERVERNAME;    --  NEWNAME\SQLEXPRESS

但是,這並不影響新數據庫的預設所有者。它們仍在與OLDNAME\user不再存在的所有者一起創建。

我知道如何在創建後更改現有數據庫的所有者。但是,我怎樣才能讓新數據庫擁有正確的所有者呢?

預設所有者將是創建數據庫的人。在您的情況下,聽起來您正在使用本地電腦帳戶作為 SQL Server 的 Windows 登錄名。因此,登錄名的格式為OLDNAME\user; 但是,您希望以NEWNAME\user所有者身份創建新數據庫。

對 Windows 帳戶的更改不會傳播到 SQL Server,因此舊登錄名將一直存在,直到您手動更改它。但是,登錄繼續工作,因為 SID 是 SQL Server 在驗證帳戶時引用它的方式。

要解決此問題,您需要使用ALTER LOGIN命令將登錄名從 更改OLDNAME\userNEWNAME\user

ALTER LOGIN [OLDNAME\user] WITH NAME = [NEWNAME\user]

如果需要更改現有數據庫的所有者,可以使用ALTER AUTHORIZATION. 我建議將數據庫所有者更改為真實使用者以外的其他人,例如

$$ sa $$.

ALTER AUTHORIZATION ON DATABASE::<database_name>
   TO <domain>\<user>

另一種選擇是使用EXECUTE AS LOGIN = 'owner_to_be',就在要執行的語句之前以創建數據庫。

引用自:https://dba.stackexchange.com/questions/308567