Sql-Server

在數據庫中為不存在的域創建 Windows 使用者

  • February 5, 2021

當域不可訪問時,是否可以在數據庫中創建 Windows 使用者?

我正在目標域之外的開發環境中準備數據庫。創建的使用者當然不會在我的開發人員中工作。

我在嘗試:

CREATE USER [NOTEXISTINGDOMAIN\User1] WITHOUT LOGIN;

但得到一個錯誤:

Windows NT user or group 'NOTEXISTINGDOMAIN\User1' not found. Check the name again.

我已經尋求幫助,似乎沒有辦法……我不太相信,因為這在我看來就像相關的場景。

補充: 讓我解釋一下我的情況。我的任務是將數據庫降級到較舊的 MS SQL Server(準確地說是 SQL 2017 到 SQL 2016)。我不能在客戶環境(和域,DC)中這樣做,因為顯然沒有兩個 MS SQL 版本可用。所以我在我的開發中進行降級。我想為我的客戶準備數據庫,其中包含所有對象,包括所有類型的使用者,包括 Windows 使用者 - 所以當我的客戶恢復數據庫時,一切都準備好了,並且與原始數據庫中的相同。

顯然,在客戶環境中恢復數據庫後,我必須稍後創建使用者。

不,這是不可能的。SQL 需要聯繫 DC 收集使用者/組 SID,並需要將其保存在 master 數據庫的 sys.server_principals 表中。

使用者由 SID 標識,而不是名稱。請參閱 sys.database_principals。如果無法訪問 SID(因為它不作為登錄名存在,或者在您的情況下域控制器不可用),則無法創建使用者。

MS 可以允許我們在 CREATE USER 命令中指定一個 SID,就像我們可以在 CREATE LOGIN 命令中那樣(在不同的場景中使用),但他們不允許這樣做。您當然可以在https://feedback.azure.com/forums/908035-sql-server請求這樣的功能,但要在未來版本中引入該功能可能需要的不僅僅是幾票。

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