3

我正在使用以下查询,我需要在其中指定排序规则提示以避免跨数据库的排序规则问题,因为此查询使用来自 2 个数据库的表。

消息 468,级别 16,状态 9,第 12 行无法解决等于操作中“Latin1_General_CS_AI”和“Latin1_General_CS_AS”之间的排序规则冲突。

目前,当我运行一些使用具有不同排序规则的不同数据库的查询时,我遇到了排序规则冲突的错误:

Delete from table1 where oldcolumn in
(
select newcolumn from Database2.dbo.table2
where invoiceid = @invno
and complete = 0
)

我将查询更改为包含排序规则提示,如下所示:

Delete from table1 where oldcolumn COLLATE SQL_Latin1_General_CP1_CS_AS in
(
select newcolumn from Database2.dbo.table2
where invoiceid = @invno
and complete = 0
)
  1. 上面的查询会解决排序问题吗?
  2. 在运算符(例如“=”运算符)的左侧或右侧指定整理提示是否相同?
  3. 可以像以往一样查询invoiceid = @invno生成运行时排序规则冲突错误吗?

注意:我问这个问题是因为我无权访问上述 2 个数据库中的任何一个,并且脚本将在实际数据库上运行。

4

1 回答 1

0

使用下面的查询:

DELETE FROM Table1
WHERE Table1.ID IN (
                SELECT Table1.ID
                FROM Table1
                INNER JOIN Database2.dbo.Table2 Table2 ON Table2.NewColumn = Table1.OldColumn COLLATE SQL_Latin1_General_CP1_CS_AS
                WHERE   Table2.invoiceid = @invno
                    AND Table2.complete = 0
                )
于 2012-06-05T05:00:20.310 回答