After upgrading SQL Server from 2019 to 2022 the following query with linked server has started to fail (I've omitted some column names and details for simplicity):
UPDATE [<remote server>].[<remote db>].dbo.Projects
SET RemoteColumnName = p.LocalColumnName
FROM prod.Projects p
WHERE p.ProjectID = Projects.ProjectID;
However basic updates without involving local table work just fine. SQL Server reports the following error which I cannot even find in documentation:
Msg 15905, Level 16, State 6, Line 44
Query not supported: Cannot determine result column sources. Invalid metadata.
Both servers are SQL Server 2022, prior to upgrading everything worked just fine.
Adding DDL for local and remote tables just in case. However, the problem doesn't seem to be schema related and reproduces on different tables with different data types.
-- Table on the remote linked server
CREATE TABLE dbo.Projects
(
ProjectID BIGINT NOT NULL,
RemoteColumnName VARCHAR(255) NOT NULL,
CONSTRAINT PK_Projects PRIMARY KEY CLUSTERED (ProjectID)
)
-- Table on the local server
CREATE TABLE prod.Projects
(
ProjectID BIGINT NOT NULL,
LocalColumnName VARCHAR(255) NOT NULL,
CONSTRAINT PK_Projects PRIMARY KEY CLUSTERED (ProjectID)
)
Adding linked server definition script. Account RemoteUser
is in db_owner role for the target database on the remote server. Both databases are in 160 compatibility level. The problem reproduces even on empty tables.
EXEC master.dbo.sp_addlinkedserver @server = N'IS', @srvproduct=N'SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'IS',@useself=N'False',@locallogin=NULL,@rmtuser=N'RemoteUser',@rmtpassword='########'
GO
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'collation name', @optvalue=NULL
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IS', @optname=N'remote proc transaction promotion', @optvalue=N'false'