Sql-Server
通過 SSMS 升級時,DACPAC 會從數據庫中刪除現有使用者和權限
我正在通過 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=使用者;登錄;角色成員;權限
但是在這種情況下,您必須在部署後腳本中設置一些腳本來處理這些內容。