我目前在拉尔森的工作交付商业智能与Microsoft SQL Server的第8章2012交付商业智能与Microsoft SQL Server 2012包错误
书中指示我建立一个SQL Server 2012 Integration Services包使用基于SQL Server 2012(ADO.NET,名为MaxMinAccounting的数据库)的数据源和名为MaxMinManufacturingDM的另一个非标准化数据集市数据库填充SQL Server目标任务。
虽然我意识到SQL Server 2012中提供的导入向导可以为我创建这个任务,但我认为本书正在尝试构建将来创建包的基础,因为它们变得更加复杂。所以我想在SSIS中完成这个任务。
在源ADO.NET任务,我有一个查询,看起来像这样:
SELECT LocationCode As PlantNumber,
LocationName as PlantName,
CAST(CountryCode AS varchar(2)) AS CountryCode
FROM Locations
WHERE LOCATIONTYPE = 'Plant Site'
看来,LocationCode是INT,LOCATIONNAME是(50)和COUNTRYCODE被列为NCHAR一个varchar (2)
在我的目的地表DimPlant,我有三列。 PlantNumber作为int,PlantName作为nvarchar(30)和countrycode作为nvarchar(2)
起初我认为数据类型可能由于它们不同而不能正确映射。所以我决定使用一个强制转换语句来改变数据类型。现在,当我运行这个软件包时,所有的东西都出错了,SSIS也没有给我任何关于什么是错误的解释。我很沮丧,并会感谢任何建议。
您需要将DimPlant中的PlantName列的大小从'varchar(30)'增加到'varchar(50)'。 – Stoleg
至少发布错误。作为开发人员,您需要决定如何将可能的50个字符的数据放入只有30个字符的字段中。您可以截断最后20个字符并可能丢失数据。或者你可能会错误的包。或者你可以扩展目标表中的字段。这是一个真实的世界场景,在现实世界中,您可以修复目标数据类型或截断字符。 –