从VS2008部署数据库项目时忽略用户

时间:2009-06-30 20:37:28

标签: database visual-studio-2008

我目前正在开发一个对本地开发环境和测试具有不同权限/用户的应用程序。我希望在部署到任一环境时能够忽略用户和权限。在.sqldeployment文件下,似乎只有用于忽略用户的权限(IgnorePermissions)和角色成员身份(IgnoreRoleMembership)的选项,而不是忽略用户自己。这可能吗?

2 个答案:

答案 0 :(得分:3)

很抱歉,目前无法在2008版Visual Studio中使用。

答案 1 :(得分:1)

没有明显的方法 - 对此功能的许多请求here。命令行工具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语句。

相关问题