当链接服务器使用 SQL 服务器时,串联不起作用

Concatenation does not work when linked server used SQL Server

当 运行在 SQL 服务器中执行 select 语句时 (server1)

select IDNo, Code + ' ' + No + ' ' + Extension as Ext, MenuNo
from [database1].[dbo].[table1]

给出预期的结果:

1  |  Toranto 56 Placid 47  |  34563

但是从另一台服务器 (server2) 以 server1 作为链接服务器的相同查询给出了不完整的输出。 IE 仅连接列(第 2 列)return 预期列值的第一个字母(IDNoMenuNo 正确)

查询链接服务器(运行 on server2):

select IDNo, Code+' '+ No + ' ' + Extension, MenuNo
from [server1].[database1].[dbo].[table1]

输出:

 1  |  T  |  34563

注:

请帮忙

使用 CAST

select IDNo, CAST(Code+' '+ No + ' ' + Extension) as VARCHAR(8000), MenuNo from [server1].[database1].[dbo].[table1]

或结果集

EXEC('SELECT ... ') WITH RESULT SET ...

我认为是不同的Collations

在这里你可以读到它是什么:

https://docs.microsoft.com/en-us/sql/t-sql/statements/collations?view=sql-server-2017

在这里你可以阅读如果 Collations 不同的服务器应该怎么做:

https://www.sqlservercentral.com/Forums/Topic906390-146-1.aspx

(您必须完成您的查询,指明您要使用哪个 Collations

例如:

SELECT Table1.Column1, Table1.Column2
FROM LinkedServer.db1.owner.Table1 AS Table1
JOIN db2.owner.Table2 AS Table2 
ON Table1.Column1 = Table2.Column1 COLLATE Latin1_General_CI_AI