[英]Ignoring users when deploying a database project from VS2008
我目前正在開發一個對本地開發環境和測試具有不同權限/用戶的應用程序。 我希望在部署到任一環境時能夠忽略用戶和權限。 在.sqldeployment文件下,似乎只有用於忽略用戶的權限(IgnorePermissions)和角色成員身份(IgnoreRoleMembership)的選項,而不是忽略用戶自己。 這可能嗎?
抱歉,目前無法在2008版的Visual Studio中使用。
沒有一個明顯的方式-許多這種功能要求在這里 。 命令行工具vsdbcmd.exe遇到同樣的問題。
作為解決方法,我使用PowerShell腳本從部署SQL腳本中刪除用戶和架構授權。 這可以作為部署后步驟(未嘗試)或TeamCity構建步驟等運行。
$rxUser = New-Object System.Text.RegularExpressions.Regex "PRINT[^;]*;\s*GO\s*CREATE USER \[[^\]]*](\s*WITH DEFAULT_SCHEMA = \[[^\]]*])?;\s*GO\s*", SingleLine
$rxSchema = New-Object System.Text.RegularExpressions.Regex "PRINT[^;]*;\s*GO\s*CREATE SCHEMA \[[^\]]*]\s*AUTHORIZATION \[[^\]]*];\s*GO\s*", SingleLine
Get-Item "*.sql" | ForEach-Object {
$input = [System.IO.File]::ReadAllText($_.FullName)
$input = $rxUser.Replace($input, "")
$input = $rxSchema.Replace($input, "")
$output = [System.IO.File]::CreateText($_.FullName)
$output.Write($input)
$output.Close()
}
可以修改正則表達式以忽略DROP USER語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.