2009-06-30 34 views
5

Tôi hiện đang làm việc trên một ứng dụng có các quyền/người dùng khác nhau cho môi trường phát triển cục bộ và kiểm tra. Tôi muốn có thể bỏ qua người dùng và quyền khi triển khai cho cả hai môi trường. Theo tệp .sqldeployment, dường như chỉ có các tùy chọn bỏ qua quyền (IgnorePermissions) và vai trò thành viên (IgnoreRoleMembership) cho người dùng, nhưng không phải vì bỏ qua người dùng. Điều này có thể không?Bỏ qua người dùng khi triển khai dự án cơ sở dữ liệu từ VS2008

+0

Câu hỏi hay, đáng xấu hổ về câu trả lời. –

Trả lời

3

Rất tiếc, hiện không thể thực hiện được trong phiên bản 2008 của Visual Studio.

+3

Ngoài ra, dường như không thể thực hiện được trong VS2010, vì tôi có cùng một vấn đề. –

1

Không có cách rõ ràng - nhiều yêu cầu cho tính năng này here. Công cụ dòng lệnh, vsdbcmd.exe, bị cùng một vấn đề.

Để giải quyết sự cố, tôi sử dụng tập lệnh PowerShell để xóa người dùng và ủy quyền lược đồ khỏi tập lệnh SQL triển khai. Điều này có thể được chạy dưới dạng bước triển khai sau (không cố gắng) hoặc bước xây dựng TeamCity v.v.

$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 có thể được sửa đổi để bỏ qua DROP USER statements.

Các vấn đề liên quan