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

SSIS SQL任务从2008年升级到2012年后停止工作,sql,sql-server,ssis,collation,sql-server-data-tools,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= ? S

我正在寻找任何可能导致软件包(在多个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)
错误:

[Execute SQL Task]错误:执行查询“use master DECLARE@db” varchar(100)DECLARE@…“失败,错误如下:“隐式” 无法将varchar值转换为varchar,因为 由于排序规则冲突,无法解析该值的排序规则 在“SQL拉丁语通用”和“芬兰语瑞典语通用”之间 添加运算符。“。可能的失败原因:查询存在问题, “ResultSet”属性设置不正确,参数设置不正确, 或连接未正确建立

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

这让我抓狂,感谢所有人的帮助


编辑以强制排序,没有任何更改

@RemusRusanu是正确的。服务器排序规则是Finnish_Swedish_CI_AS,数据库排序规则是拉丁语。该错误是SSIS行为中的一个错误,因为查询有效并在management studio中运行

我无法使用master命令和3部分命名来访问正确的数据库,即具有不同排序规则的数据库。再多的强制或强制排序似乎也不能解决这个问题(服务器应该设置拉丁排序规则,因为所有数据库似乎都在使用它)

解决方案就是更改使用master->使用mydatabase


感谢@RemusRusanu

,我认为当数据工具仍然记得我创建的第一个数据库时,即使我已经删除并重新创建了它。我认为问题在于实例排序(因此
master
msdb
),而不是数据库排序。您以前的实例是
Finnish\u-Swedish\u-CI\u-AS
,新实例是
SQL\u-Latin1\u-General\u-CP1\u-CI\u-AS
?您需要显式强制执行所需的排序规则。@RemusRusanu您的意思是使用COLLATE database_默认值,它没有帮助。顺便说一句,查询始终在management studio上工作。此错误仅在SSI上的sql任务中出现