2009-06-30 25 views
5

Aktualnie pracuję nad aplikacją, która ma różne uprawnienia/użytkowników dla lokalnego środowiska programistycznego i testu. Chcę móc zignorować użytkowników i uprawnienia podczas wdrażania do dowolnego środowiska. W pliku .sqldeployment istnieją tylko opcje ignorowania uprawnień (IgnorePermissions) i przypisania ról (IgnoreRoleMembership) dla użytkownika, ale nie ignorowania samych użytkowników. czy to możliwe?Ignorowanie użytkowników podczas wdrażania projektu bazy danych z VS2008

+0

Dobre pytanie, wstyd o odpowiedzi. –

Odpowiedz

3

Niestety, obecnie nie jest możliwe w wersji 2008 Visual Studio.

+3

Również nie wydaje się możliwe w VS2010, ponieważ mam ten sam problem. –

1

Nie ma oczywistego sposobu - wiele próśb o tę funkcję here. Narzędzie wiersza polecenia, vsdbcmd.exe, cierpi z powodu tego samego problemu.

Jako obejście używam skryptu PowerShell do usuwania użytkowników i autoryzacji schematu ze skryptu SQL wdrażania. To może być uruchamiany jako krok po wdrożeniu (nie próbował) lub etapu TeamCity kompilacji itp

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

regex mogą być zmodyfikowane, aby ignorować wypowiedzi DROP USER też.

Powiązane problemy