2015-09-21 12 views
6

SQL Server Data Tools team blog đề cập rằng bây giờ có thể sử dụng MsBuild để thực hiện so sánh lược đồ của hai DacPac hoặc cơ sở dữ liệu. Tuy nhiên, chúng không đề cập chính xác cách truyền chuỗi kết nối tới cơ sở dữ liệu nguồn và đích. Nếu tôi đặt tham số/p: source = "chuỗi kết nối của tôi" Tôi nhận được lỗi:Làm thế nào để gửi một chuỗi kết nối làm tham số cho MsBuild để thực hiện So sánh lược đồ SQL?

MSBUILD : error MSB4177: Invalid property. The name "Initial Catalog" contains an invalid character " ".

Các dòng lệnh script PowerShell tôi gửi đến msbuild là:

msbuild ".\SchemaCompare.proj" /t:SqlSchemaCompare 
/p:source="$sourceConnString" /p:target="$targetConnString" 
/p:XmlOutput="$schemaCompareReportPath" 

nơi SchemaCompare. proj chứa nội dung gợi ý trên SQL Server Data Tools team blog

Trả lời

3

Nó chỉ ra rằng bạn cần phải thay thế các dấu chấm phẩy trong chuỗi kết nối với %3B, như vậy:

$sourceConnString = $sourceConnString.Replace(";", "%3B") 

Giải thích: Điều này ngăn chặn các xung đột phân cách giữa giá trị SQL Server ConnectionString và MSBuild /p (a.k.a. /properties) giá trị chứa nó. Vắng mặt mã hóa URL này, MSBuild sẽ mã hóa ConnectionString trên dấu chấm phẩy thay vì chuyển toàn bộ giá trị còn nguyên vẹn (cho các thư viện máy khách SQL Server để mã hóa). Điều này cũng áp dụng cho thuộc tính Properties của MSBuild Task.

Tài liệu tham khảo:

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