在SQL Server( server1 )中运行select语句时
select IDNo, Code + ' ' + No + ' ' + Extension as Ext, MenuNo
from [database1].[dbo].[table1]
得到预期的结果:
1 | Toranto 56 Placid 47 | 34563
但是从另一台服务器(服务器2)对服务器1的查询与链接服务器相同,则输出不完整。即
串联列(第二列)仅返回预期列值的第一个字母(IDNo
和MenuNo
正确出现)
使用链接的服务器查询(在 server2 上运行):
select IDNo, Code+' '+ No + ' ' + Extension, MenuNo
from [server1].[database1].[dbo].[table1]
输出:
1 | T | 34563
注意:
server2 : SQL_Latin1_General_CP1_CI_AS
server1: Latin1_General_CI_AI
请帮助
答案 0 :(得分:0)
使用CAST
select IDNo, CAST(Code+' '+ No + ' ' + Extension) as VARCHAR(8000), MenuNo from [server1].[database1].[dbo].[table1]
或结果集
EXEC('SELECT ... ') WITH RESULT SET ...
答案 1 :(得分:0)
我认为这与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