2009-06-30 13 views
5

現在、ローカル開発環境とテストで異なるアクセス許可/ユーザーを持つアプリケーションで作業しています。いずれの環境にも展開する際に、ユーザーとアクセス許可を無視できるようにしたいと考えています。 .sqldeploymentファイルの下には、ユーザーのアクセス許可(IgnorePermissions)と役割のメンバーシップ(IgnoreRoleMembership)を無視するオプションしかないようですが、ユーザー自身は無視されません。これは可能ですか?VS2008からデータベースプロジェクトを展開する際にユーザーを無視します。

+0

良い質問、恥ずかしいです。 –

答えて

3

申し訳ありません、現時点ではVisual Studio 2008のバージョンでは使用できません。

+3

また、私は同じ問題があるので、VS2010では可能ではないようです。 –

1

明らかな方法はありません。この機能の多くの要求はhereです。コマンドラインツールvsdbcmd.exeにも同じ問題があります。

回避策として、PowerShellスクリプトを使用して、展開SQLスクリプトからユーザーとスキーマの承認を削除します。これは、正規表現があまりにもDROPのUSER文を無視するように変更することができ

$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() 
} 

などのポストデプロイ段階(試していない)、またはチームシティービルドステップとして実行することができます。

関連する問題