2014-09-25 53 views
3

我們正在使用SSDT來發布對SQL Server 2005實例的更改。我們編寫一個PostDeploy SQL文件來處理更新我們所有的靜態數據,並且它工作得很好......但只有當我手動執行PostDeploy腳本。如果我讓SSDT將其作爲實際的Publish/PostDeploy操作推出,它會失敗,因爲它會刪除所有非ASCII字符。SSDT項目在PostDeploy中的unicode發佈失敗 - 任何解決方法或配置來解決這個問題?

例如

INSERT INTO ##RawData ([FieldID], [FormPageID], [Name], [IsVisible], [DataTypeID], [LookupID], [MaxLength], [DecimalPlaces], [RequiredTypeID], [QuestionLeader], [Text_En], [AdditionalText_En], [StatsVariable], [AdditionalStatsVariable1], [AdditionalStatsVariable2], [StatsDescription], [ApplicabilityLogic], [FieldValueLogic], [Text_Sp], [AdditionalText_Sp]) VALUES (N'92', N'7', N'OtherHeartDisease', N'1', N'2', N'921', N'1', NULL, N'1', N'D.17', N'Have you ever been told you have any other heart disease? ', N'What other heart disease? ', N'svohd', NULL, NULL, N'D17. Other heart disease', NULL, NULL, N'¿Le han dicho alguna vez si tiene alguna otra enfermedad cardiaca?', N'¿Qué otra enfermedad cardiaca?') 

變爲

INSERT INTO ##RawData ([FieldID], [FormPageID], [Name], [IsVisible], [DataTypeID], [LookupID], [MaxLength], [DecimalPlaces], [RequiredTypeID], [QuestionLeader], [Text_En], [AdditionalText_En], [StatsVariable], [AdditionalStatsVariable1], [AdditionalStatsVariable2], [StatsDescription], [ApplicabilityLogic], [FieldValueLogic], [Text_Sp], [AdditionalText_Sp]) VALUES (N'92', N'7', N'OtherHeartDisease', N'1', N'2', N'921', N'1', NULL, N'1', N'D.17', N'Have you ever been told you have any other heart disease? ', N'What other heart disease? ', N'svohd', NULL, NULL, N'D17. Other heart disease', NULL, NULL, N'�Le han dicho alguna vez si tiene alguna otra enfermedad cardiaca?', N'�Qu� otra enfermedad cardiaca?') 

這是實際出現在數據庫 - ¿闕成爲曲或曲?或類似的東西。這是SSDT工具的完整限制還是存在一些我不知道的模糊配置或解決方法?我試圖將部署過程中手動編寫的步驟數量減少到儘可能低,以避免我的開發人員頭疼,所以擺脫「發佈然後執行數據腳本」將是一個很大的幫助。

數據庫設置爲排序規則sql_latin1_general_cp1_ci_as,但這些是NVARCHAR列,所以它應該沒關係。

回答

3

我收到了!

解決方法是將PostDeploy文件編碼爲UTF-16(代碼頁1200)。顯然,SSDT在用UTF-8編碼的SQL腳本上很難執行。許多MS工具在UTF-8上失敗,所以在那裏並不奇怪。

+0

你是如何改變文件的編碼的?我無法在Visual Studio的屬性窗口中看到任何內容來執行此操作! **更新:**發現它..你不能在項目中做到這一點,你必須在磁盤/源代碼控制中做到這一點。 – gvee 2015-12-30 13:54:25

相關問題