Хранимая процедура SQL Server 2008 с несколькими БД: не удалось привязать состоящий из нескольких частей идентификатор

#sql-server-2008 #stored-procedures #multi-database

#sql-server-2008 #хранимые процедуры #многоданные базы данных

Вопрос:

Я пытаюсь написать хранимую процедуру для SQL Server 2008. Это для инструмента миграции, который переносит данные из одной базы данных в другую.

Я хочу получить все записи из старой базы данных, которые еще не присутствуют в новой базе данных. С этой целью я использую хранимую процедуру, приведенную ниже. Но я получаю сообщение об ошибке

Не удалось привязать многосоставный идентификатор

при выполнении хранимой процедуры. Что я могу сделать, чтобы это сработало?

Вот SP:

 SELECT *
FROM Measurement_device
WHERE Measurement_device.Department_Code = '99'
  AND mir.dbo.Gages.Gage_code != Device_Number
  

Комментарии:

1. Посмотрите на Merge инструкцию для этого.

Ответ №1:

Это потому, что у вас есть mir.dbo.Gages.Gage_code условие, когда на эту таблицу нет ссылки в предложении FROM . Попробуйте что-то вроде этого:

 SELECT m.*
FROM Measurement_device m
    LEFT JOIN mir.dbo.Gages g ON g.Gage_code = m.Device_Number
WHERE m.Department_Code = '99'
    AND g.Gage_code IS NULL -- where the gage_code/device_number does not already exist in mir database