Sql-Server

在儲存過程創建期間重新創建使用者和模式

  • December 3, 2019

如主題中所述,當我正在使用的開發人員創建儲存過程時,正在創建新使用者和模式。最初我為該開發人員單獨創建了一個使用者並登錄,但後來兩者都刪除了。但是,每當他們執行腳本來創建 SP 時,都會重新創建以其 Active Directory 名稱命名的使用者和架構,並將 SP 放置在該“新”架構中。

即使我刪除了 SP、使用者和架構,如果他們再次創建 SP,使用者和架構也會回來。

有沒有人對此有任何見解?

此行為在CREATE SCHEMA文件的“備註”部分中的“隱式架構和使用者創建”下進行了說明(添加強調以突出您所遇到的情況):

在某些情況下,使用者可以在沒有數據庫使用者帳戶(數據庫中的數據庫主體)的情況下使用數據庫。這可能發生在以下情況:

  • 登錄具有 CONTROL SERVER 權限。
  • Windows 使用者沒有單獨的數據庫使用者帳戶(數據庫中的數據庫主體),但作為具有數據庫使用者帳戶(Windows 組的數據庫主體)的 Windows 組的成員訪問數據庫。

當沒有數據庫使用者帳戶的使用者在未指定現有架構的情況下創建對象時,將在數據庫中為該使用者自動創建數據庫主體和預設架構。創建的數據庫主體和架構將與使用者在連接到 SQL Server 時使用的名稱(SQL Server 身份驗證登錄名或 Windows 使用者名)具有相同的名稱。

此行為對於允許基於 Windows 組的使用者創建和擁有對像是必要的。但是,它可能會導致無意創建模式和使用者。為避免隱式創建使用者和架構,請盡可能顯式創建數據庫主體並分配預設架構。或者,在數據庫中創建對象時,使用兩部分或三部分對象名稱顯式聲明現有模式。

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