У меня есть ситуация, когда у меня есть две базы данных с одинаковой структурой. Первые имеют некоторые данные в своих таблицах данных. Мне нужно создать скрипт, который будет передавать данные из первой базы данных во вторую. Я создал этот скрипт.
DECLARE @table_name nvarchar(MAX),
@query nvarchar(MAX)
DECLARE @table_cursor CURSOR
SET @table_cursor = CURSOR FAST_FORWARD
FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
OPEN @table_cursor
FETCH NEXT FROM @table_cursor
INTO @table_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = 'INSERT INTO ' + @table_name + ' SELECT * FROM MyDataBase.dbo.' + @table_name
print @query
exec @query
FETCH NEXT FROM @table_cursor
INTO @table_name
END
CLOSE @table_cursor
DEALLOCATE @table_cursor
Проблема в том, что когда я запускаю скрипт, оператор "print @query" печатает оператор, подобный этому
INSERT INTO table SELECT * FROM MyDataBase.dbo.table
Когда я копирую это и запускаю из Management studio, он работает нормально. Но когда скрипт пытается запустить его с exec, я получаю эту ошибку
Msg 911, Level 16, State 1, Line 21
Could not locate entry in sysdatabases for database 'INSERT INTO table SELECT * FROM MyDataBase'. No entry found with that name. Make sure that the name is entered correctly.
Надеюсь, кто-нибудь скажет мне, с кем это связано.
С наилучшими пожеланиями,
Иордан Танев