【问题标题】:SSIS SQL task stopped working after upgrading to 2012 from 2008从 2008 升级到 2012 后 SSIS SQL 任务停止工作
【发布时间】:2017-05-27 07:41:04
【问题描述】:

我正在寻找任何可能导致软件包(在多个 2008 r2 环境中运行)在升级到 2012 时停止运行的信息。

所有的 SQL 任务都开始出现故障,我不知道为什么。 这是一个例子。

我得到一个排序规则错误,即使我重新创建了数据库以正确排序并重新进行查询,所以它不再加入。

不加入怎么可能出现排序错误!

use master
DECLARE @db varchar(100)
DECLARE @tid varchar(3)
DECLARE @queryta varchar(max)
SET @db= ?
SET @tid = ?
SET @queryta='

  SELECT smt.nro  COLLATE database_default as  yr, 
  smt.type  COLLATE database_default AS tyyppi,
  ISNULL(CAST(CONVERT(date,smt.dt1) AS VARCHAR),''1799-12-30'')  COLLATE database_default AS dt,
  ISNULL(CAST(CONVERT(date,smt.dt12 AS VARCHAR),''1799-12-30'') COLLATE database_default AS dt2
  FROM [mydatabase].[dbo].[table] as smt
WHERE  smt.T_Id='''+@tid+'''
'
exec(@queryta)

错误:

[执行 SQL 任务] 错误:执行查询“使用主 DECLARE @db varchar(100) DECLARE @..." 失败并出现以下错误:"隐式 无法执行 varchar 值到 varchar 的转换,因为 由于排序规则冲突,值的排序规则未解决 在“SQL_Latin1_General_CP1_CI_AS”和“Finnish_Swedish_CI_AS”之间 add operator."。可能的失败原因:查询有问题, “ResultSet”属性设置不正确,参数设置不正确, 或未正确建立连接。

我正在使用 SQL Server Data Tools 进行调试。

这让我发疯了,感谢所有帮助!

已编辑以强制整理,没有更改

【问题讨论】:

  • 我认为当数据工具还记得我创建的第一个数据库时,即使我已经删除它并重新创建它。
  • 我认为问题在于实例排序规则(因此 mastermsdb),而不是数据库排序规则。您之前的实例是 Finnish_Swedish_CI_AS 而新实例是 SQL_Latin1_General_CP1_CI_AS ?您需要明确强制所需的排序规则。
  • @RemusRusanu 你的意思是使用 COLLATE database_default,它没有帮助
  • 顺便说一句,查询一直在管理工作室工作。此错误仅出现在 SSIS 上的 sql-task 中

标签: sql sql-server ssis collation sql-server-data-tools


【解决方案1】:

@RemusRusanu 是对的。服务器排序规则是 Finnish_Swedish_CI_AS,数据库排序规则是拉丁语。该错误是 SSIS 行为中的错误,因为查询有效并在管理工作室中运行。

我不能使用 use master 命令和 3 部分命名来访问正确的数据库,一个具有不同排序规则的数据库。似乎没有任何强制转换或强制排序规则可以解决它(服务器应该已经设置了拉丁语排序规则,因为所有数据库似乎都在使用它)。

解决方案只是更改 use master -> use mydatabase

感谢@RemusRusanu

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多