저는 SQL에 대해 상당히 익숙하며, 다른 사람들이 제가 가지고있는 문제를 도와 줄 수 있기를 바랍니다. 이 정확한 문제를 파악하는 데 도움이되는 답을 찾을 수 없었습니다.SQL 서버의 Openquery 문
두 개의 다른 서버에 두 개의 SQL Server 데이터베이스에 두 개의 테이블이 있습니다.이 두 테이블은 ItemID 열을 사용하여 비교하려고합니다. Table2에서 존재하지 않는 ItemID가있는 레코드를 Table1에서 찾고 테이블 변수에 삽입하려고합니다.
--Create table variable to hold query results
DECLARE @ItemIDTable TABLE
(
[itemid][NVARCHAR](20) NULL
);
--Query data and insert results into table variable
INSERT INTO @ItemIDTable
([itemid])
SELECT a.[itemid]
FROM database1.dbo.table1 a
WHERE NOT EXISTS (SELECT 1
FROM [Database2].[dbo].[table2]
WHERE a.itemid = [Database2].[dbo].[table2].[itemid])
ORDER BY itemid
이 두 데이터베이스가 같은 서버에 테스트 서버에서 작동하지만 서로 다른 서버에있는 현실에서 : 나는 다음과 같은 코드가 있습니다. 내가 OPENQUERY를 사용하여 다음을 시도했지만, 나는 그것이 옳다는 것을 안다.
--Create table variable to hold query results
DECLARE @ItemIDTable TABLE
(
[ItemID][nvarchar](20) NULL
);
--Query data and insert results into table variable
INSERT INTO @ItemIDTable
([ItemID])
SELECT a.[ItemID]
FROM Database1.dbo.Table1 a
WHERE NOT EXISTS (SELECT 1
FROM OPENQUERY([Server2], SELECT * FROM [Database2].[dbo].[Table2]')
WHERE a.ItemID = [Database2].[dbo].[Table2].[ItemID])
ORDER BY ItemID
은 내가, 내가 그것을 구조화하는 방법 단지 아주 확실하지 않다 나는 두 서버에있는 두 개의 데이터베이스가 WHERE 절에 뭔가를 할 필요가 확실 해요. 아무도 도와 줄 수 있습니까?
답장을 보내 주셔서 감사합니다. 나는 당신의 제안을 사용하여 임시 테이블에 OPENQUERY 결과를 채우고 완벽하게 작동했습니다. – lunderkl041