在执行包我收到以下消息。
文本被截断或一个或多个字符在目标代码页不匹配。
我从其中有一个字段名称的SQL表提取数据task_teammember
数据类型为VARCHAR(MAX)
该包装exeuction在源失效。 I型铸造列task_teammber
成VARCHAR(8000)
其没有任何错误信息执行该包。 然而,尽管有在源表中超过8000个字符的目的地只接收8000个字符。
如何从源传输所有数据使用SSIS目标表时,列被定义为VARCHAR(MAX)
在执行包我收到以下消息。
文本被截断或一个或多个字符在目标代码页不匹配。
我从其中有一个字段名称的SQL表提取数据task_teammember
数据类型为VARCHAR(MAX)
该包装exeuction在源失效。 I型铸造列task_teammber
成VARCHAR(8000)
其没有任何错误信息执行该包。 然而,尽管有在源表中超过8000个字符的目的地只接收8000个字符。
如何从源传输所有数据使用SSIS目标表时,列被定义为VARCHAR(MAX)
您需要使用SSIS数据类型的text stream [DT_TEXT]
来从数据类型的SQL Server表列数据varchar(MAX)
下面是示出如何SSIS自动推断从源数据类型的简单示例。 该示例使用SQL Server 2008 R2数据库和SSIS 2008 R2
创建SQL Server数据库中的以下表格来存储源文本和使用目的来插入使用SSIS包的文本。
CREATE TABLE [dbo].[SourceTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SourceText] [varchar](max) NOT NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[DestinationTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DestinationText] [varchar](max) NOT NULL
) ON [PRIMARY]
插入大长度的文本到源表。 你可以看到的数据包含超过10,000个字符的源表和目标表是在执行包之前空。
与连接管理器的数据库中创建的SSIS包。 广场上的控制流任务数据流任务。 在数据流任务,放置一个OLE DB源和OLE DB目标以把数据从dbo.SourceTable
到dbo.DestinationTable
。 下面的截图显示了包的执行状态。
如果再次运行查询,你会看到目标表中填充使用SSIS包没有任何截断误差从源表中的文本。
返回数据包的数据流任务选项卡,然后在右键单击OLE DB Source
,然后单击Show Advanced Editor...
在Advanced Editor for OLE DB Source
,单击输入和输出属性选项卡。 展开External Columns
和选择SourceText
。 您会注意到SSIS设置的列的数据类型为文本stream [DT_TEXT]
基于所述数据类型VARCHAR(MAX)
在源表中定义。
下面是SQL Server数据类型VARCHAR(MAX)和NVARCHAR(MAX)在SSIS的映射。
了解更多关于它的MSDN Integration Services数据类型
希望帮助。