#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