2009-06-30 10 views
5

Attualmente sto lavorando su un'applicazione con permessi/utenti diversi per l'ambiente di sviluppo locale e test. Voglio essere in grado di ignorare gli utenti e le autorizzazioni durante la distribuzione in uno dei due ambienti. Sotto il file .sqldeployment, sembrano esserci solo opzioni per ignorare le autorizzazioni (IgnorePermissions) e l'appartenenza al ruolo (IgnoreRoleMembership) per un utente, ma non per ignorare gli utenti stessi. È possibile?Ignorare gli utenti durante la distribuzione di un progetto di database da VS2008

+0

Buona domanda, peccato per la risposta. –

risposta

3

Siamo spiacenti, non è attualmente possibile nella versione 2008 di Visual Studio.

+3

Inoltre, non sembra possibile in VS2010, poiché ho lo stesso problema. –

1

Non c'è un modo ovvio: molte richieste per questa funzione here. Lo strumento da riga di comando, vsdbcmd.exe, soffre dello stesso problema.

Come soluzione temporanea, utilizzo uno script PowerShell per rimuovere gli utenti e l'autorizzazione dello schema dallo script SQL di distribuzione. Ciò può essere eseguito come una fase di post-implementazione (non provato), o un passo TeamCity accumulo ecc

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

La regex potrebbe essere modificato per ignorare DROP USER troppo.

Problemi correlati