2009-06-30 100 views
5

我目前正在研究具有不同權限/用戶的本地開發環境和測試應用程序。我希望在部署到任一環境時能夠忽略用戶和權限。在.sqldeployment文件下,似乎只有用於忽略用戶權限(IgnorePermissions)和角色成員資格(IgnoreRoleMembership)的選項,但不能忽略用戶自己。這可能嗎?從VS2008部署數據庫項目時忽略用戶

+0

好的問題,關於答案的恥辱。 – 2010-06-30 11:54:27

回答

3

對不起,2008版本的Visual Studio目前不可能。

+3

另外,在VS2010中似乎不可能,因爲我有同樣的問題。 – 2010-06-30 11:55:18

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語句也可以運行。