【发布时间】: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 进行调试。
这让我发疯了,感谢所有帮助!
已编辑以强制整理,没有更改
【问题讨论】:
-
我认为当数据工具还记得我创建的第一个数据库时,即使我已经删除它并重新创建它。
-
我认为问题在于实例排序规则(因此
master和msdb),而不是数据库排序规则。您之前的实例是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