我正在寻找任何可能导致程序包(在多个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数据工具进行调试。
这让我疯狂,任何和所有的帮助都赞赏!!
编辑执行收集,无变化
答案 0 :(得分:0)
@RemusRusanu是对的。服务器排序规则是Finnish_Swedish_CI_AS,数据库排序规则是拉丁文。该错误是SSIS行为中的错误,因为查询有效并在管理工作室中运行。
我无法使用使用master 命令和3部分命名来访问正确的数据库,即具有不同排序规则的数据库。没有任何强制转换或强制执行整理似乎可以解决它(服务器应该已经设置了拉丁语的整理,因为所有数据库似乎都使用它)。
解决方案只是改变使用主人 - > 使用mydatabase
感谢@RemusRusanu