我使用VS2015與SSDT開發集成服務項目,爲SQL Server 2016部署SSIS包到服務器時,我所面臨的問題的一個例子:字符編碼問題,當部署SSIS包
我在測試數據庫中創建一個表(校對:SQL_Latin1_General_CP1_CI_AS)爲:
CREATE TABLE [dbo].[EncodingError](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Text] [nvarchar](20) NULL,
[TimeStamp] [datetime2](7) NULL) ON [PRIMARY]
然後我創建了一個新的SSIS項目(項目部署模型),然後添加到默認包連接管理器的測試數據庫和一個「執行SQL Task「的腳本:
INSERT INTO [dbo].[EncodingError](Text,TimeStamp) SELECT '¤' AS Text,GETDATE() AS TimeStamp
當運行從VS包或部署整個項目到服務器(SSIS目錄)並運行包存在,它正確地插入行到表:
ID Text TimeStamp
1 ¤ 2017-09-04 12:13:54.3100000
2 ¤ 2017-09-04 12:14:26.2266667
當我重新部署 - 現在這隻包的,而不是整個項目 - 服務器和我運行它再次將其插入該行是這樣的:
ID Text TimeStamp
3 ¤ 2017-09-04 12:16:16.8866667
現在,當我再次重新部署整個項目它的正常工作。
在我僅部署了包之後,我使用嚮導創建了一個新的SSIS項目,以從服務器導回項目。在這種情況下,任務中的腳本顯示爲:
INSERT INTO [dbo].[EncodingError](Text,TimeStamp)
SELECT '¤' AS Text
,GETDATE() AS TimeStamp
任何想法是什麼原因導致此行爲?如果我從字符編碼的角度來部署整個項目而不僅僅是包,那麼它有什麼區別?
應用更新解決了這個問題解決了問題。謝謝。 – Levi