在 SQL Server 2005 上尝试合并两个数据库之间丢失的项目时出错

Getting an error when trying to merge missing items between two databases on SQL Server 2005

所以,这里有点 SQL 新手,我正在尝试让一些东西在 Microsoft SQL Server 2005 上工作(是的,旧的过时的数据库仍在为企业提供动力)。

我可以让它在我的本地开发机器上正常工作(运行ning SQL Server 2019)但是当我 运行 它在 2005 服务器上时它出错了。

查询:

MERGE CustomDB.[dbo].StockCounts AS [Target] 
USING (SELECT ID, 
              ProductNo 
       FROM   CompanyDBReplication.[dbo].STOCKPRODUCT) AS [Source] (ID, 
      ProductNo) 
ON [Target].ID = [Source].ID 
WHEN NOT MATCHED THEN 
  INSERT (id, 
          ProductNo, 
          CountDate, 
          CountID) 
  VALUES ([Source].ID, 
          [Source].ProductNo, 
          NULL, 
          NULL); 

错误:

Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '.'.  
Msg 156, Level 15, State 1, Line 4 Incorrect syntax near the keyword 'AS'.

现在我不太了解这里的差异,为什么会出错,也不知道我将如何搜索这个(我真的从来没有 SQL 并且不得不 Google 这使它首先起作用)。

基本上我想 copy/merge 项目从源数据库到目标数据库并添加新的项目,如果在目标数据库中找不到它们可能会添加到源中。

如果有人可以帮助我解决这个问题以在 SQL Server 2005 或 propose/give 上工作,请给我一个不同的解决方案示例同样的事情并在 SQL Server 2005 上工作那将是很棒的,我将永远感激不尽。

我得到这个解决方案的来源在这里:

Merge 语句只在MSSQL 2008 中出现,您可以使用外连接代替。 像这样。

INSERT INTO CustomDB.[dbo].StockCounts (
    id, 
    ProductNo, 
    CountDate, 
    CountID
)
SELECT        
    [Source].ID, 
    [Source].ProductNo, 
    NULL, 
    NULL
FROM CompanyDBReplication.[dbo].STOCKPRODUCT) AS [Source]
LEFT JOIN CustomDB.[dbo].StockCounts AS [Target] ON [Target].ID = [Source].ID
WHERE [TARGET].Id IS NULL;