【问题标题】:SQL Server 2008 column collationSQL Server 2008 列排序规则
【发布时间】:2014-06-23 15:25:07
【问题描述】:

我正在使用动态 SQL 向表中插入数据:

SET @Profiles = N'SELECT ''' + @var1 + ''' as col1, col2, col3, col4, col5, col6, col7
        FROM ' + @TableName + 'tbl1'

INSERT INTO
table (col1, col2, col3, col4, col5, col6, col7)
EXEC (@Profiles)

以上查询在存储过程中,由作业运行。

我注意到当作业运行时,正确插入了带有日语字符的数据,但是当作业完成并且我在插入的表上进行选择时,它返回“?”而不是日文字符。我正在使用排序规则SQL_Latin1_General_CP1_CI_AS,我的列数据类型是nvarchar。我也尝试更改排序规则,但即使使用日语排序规则,它也会返回“?”。你知道我该如何处理吗?

编辑 1 我忘了补充说存储过程驻留在 SSIS 包中。也许它可以提供帮助。

【问题讨论】:

  • 您是否在每一步都在处理NVARCHAR 数据类型?例如,您是在使用VARCHAR 变量还是在插入之前从VARCHAR 列中选择数据?
  • 源列和目标列的数据类型及其大小相同。此外,当我手动运行存储过程时也可以。当我从作业运行存储过程时会出现问题。

标签: sql sql-server-2008 collation


【解决方案1】:

我发现了问题所在。我在 SSIS 包的最后一步有一个函数,它删除不可打印的白色字符,这个函数参数是 varchar 而不是 nvarchar。我把它改成了nvarchar,现在可以了。

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2010-10-06
    • 2010-11-10
    • 2012-06-10
    相关资源
    最近更新 更多