#sql #sql-server
Вопрос:
У нас есть DBServer1 и DBServer2, и мы хотим загрузить данные с сервера DBSourceServer на сервер DBTargetServer в хранимой процедуре SQL Server. SourceDB и SourceDWHTemp находятся в сервере DBServer1. База данных TargetDB находится в DBServer2. Мы применяем методы ETL в сценарии хранимой процедуры SourceDB, а промежуточные таблицы хранятся в SourceDWHTemp. Окончательные данные будут загружены в таблицы TargetDWHDB. Мы столкнулись с проблемами при запуске сценария.
---- We are running this script in [TargetDB] database and DBTargetServer machine
Use [TargetDWHDB]
select * from [DBSourceServer].[SourceDWHTemp].[dbo].[SourceTable1] ----- It is successfully executing
DROP TABLE [DBSourceServer].[SourceDWHTemp].[dbo].[SourceTable1] -----
Это вызывает следующее сообщение об ошибке
сообщение об ошибке:
Msg 117, Уровень 15, Состояние 1, Строка 15 Имя объекта ‘DBSourceServer.SourceDWHTemp.dbo.SourceTable1’ содержит больше, чем максимальное количество префиксов. Максимум 2. Время завершения: 2021-06-02T18:21:31.6669423 08:00
Как решить эту проблему. Заранее спасибо.
Комментарии:
1. Вы не можете удалить таблицу на связанном сервере (по крайней мере, не используя этот синтаксис).
2. Даже я не могу усечь это: УСЕЧЬ ТАБЛИЦУ [DBSourceServer]. [SourceDWHTemp].[dbo]. [SourceTable1] — — — — — Это выдает следующее сообщение об ошибке Msg 2702, Уровень 16, Состояние 2, Строка 15 База данных «SourceDWHTemp» не существует.
Ответ №1:
Попробуйте использовать нижеприведенный вариант выполнения.
EXECUTE ( 'DROP TABLE .[SourceDWHTemp].[dbo].[SourceTable1] ' ) AT [DBSourceServer];