Sql-Server

通過 SSMS 升級時,DACPAC 會從數據庫中刪除現有使用者和權限

  • August 18, 2022

我正在通過 Visual Studio 中的數據庫項目開發我的數據庫,每當我需要升級我的數據庫架構時,我喜歡使用 SSMS 來使用 DACPAC 來完成此操作。

但是,每當我使用我的 DACPAC 升級我的數據庫架構時,目前現有的安全使用者和這些使用者的權限都會被刪除。我需要它們保留在數據庫中。

無論如何,當我在 SSMS 中使用“升級數據層應用程序”升級我的數據庫時,是否可以將 DACPAC 配置為不刪除使用者及其權限?

提前致謝。

據我所知,在 SSMS 中使用“升級數據層應用程序”嚮導時,無法跳過該步驟。

您的選擇是:

  • 在 dacpac 中包含所需的安全對象(CREATE USER語句等)

    • 這可能適用於您的情況,也可能不適用於您的情況,具體取決於您在不同的目標環境中是否有不同的所需安全對象
  • 使用 sqlpackage.exe 發布 dacpac 而不是使用 SSMS 嚮導,並傳遞ExcludeObjectTypes參數,列出您想要跳過的所有安全對象。有關範例,請參見此處,以及可以傳入哪些對象:SqlPackage 發布參數、屬性和 SQLCMD 變數

這是第二種方法的範例:

sqlpackage 
   /Action:Publish \
   /SourceFile:"C:\YourDatabaseName.dacpac" \
   /TargetConnectionString:"Your connection string" \
   /p:ExcludeObjectTypes="Users;Logins;RoleMembership;Permissions"

我通常更喜歡以這種方式排除安全性內容:

/p:ExcludeObjectTypes=使用者;登錄;角色成員;權限

但是在這種情況下,您必須在部署後腳本中設置一些腳本來處理這些內容。

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