从2008年升级到2012后,SSIS SQL任务停止工作

时间:2017-01-12 09:13:41

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

我正在寻找任何可能导致程序包(在多个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任务]错误:执行查询“使用master DECLARE @db   varchar(100)DECLARE @ ...“因以下错误而失败:”隐式   无法将varchar值转换为varchar,因为   由于排序规则冲突,值的排序规则未得到解决   在“SQL_Latin1_General_CP1_CI_AS”和“Finnish_Swedish_CI_AS”之间   添加运算符。“。可能的失败原因:查询问题,   “ResultSet”属性设置不正确,参数设置不正确,   或连接未正确建立。

我正在使用SQL Server数据工具进行调试。

这让我疯狂,任何和所有的帮助都赞赏!!

编辑执行收集,无变化

1 个答案:

答案 0 :(得分:0)

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

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

解决方案只是改变使用主人 - > 使用mydatabase

感谢@RemusRusanu