2009-06-30 13 views
5

Actualmente estoy trabajando en una aplicación que tiene diferentes permisos/usuarios para el entorno de desarrollo local y la prueba. Quiero poder ignorar los usuarios y los permisos al implementar en cualquier entorno. En el archivo .sqldeployment, parece haber solo opciones para ignorar los permisos (IgnorePermissions) y la membresía de roles (IgnoreRoleMembership) para un usuario, pero no para ignorar a los usuarios. es posible?Ignorando usuarios al implementar un proyecto de base de datos desde VS2008

+0

Buena pregunta, lástima la respuesta. –

Respuesta

3

Lo sentimos, actualmente no es posible en la versión 2008 de Visual Studio.

+3

Además, no parece ser posible en VS2010, ya que tengo el mismo problema. –

1

No hay una manera obvia - muchas solicitudes para esta función here. La herramienta de línea de comandos, vsdbcmd.exe, sufre el mismo problema.

Como solución alternativa, utilizo una secuencia de comandos de PowerShell para eliminar usuarios y la autorización de esquema de la secuencia de comandos SQL de implementación. Esto podría ser ejecutado como un paso posterior a implementar (no tratado), o una etapa de acumulación TeamCity etc.

$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 expresión regular puede ser modificado para ignorar DROP USER también.

Cuestiones relacionadas