ETL от SQL Server 2016 до SQL Server Management Studio 2005

Я пытаюсь скопировать базу данных с сервера sql server 2016 на другой сервер в sql server managment studio 2005. (server1.database1) to (server2.database1) Я попробовал отсоединить и прикрепить метод, но он не сработал. Я тоже пробовал скопировать базу данных, тоже не вышло! Мне нужны все таблицы и просмотры и пр! наконец, я мог скопировать все таблицы и пр, но проблема в том, что я не могу иметь представления как представление, и они просто сохраняются как таблица. Чтобы решить эту проблему, я подумал, что если я скопирую запрос из server1.views и выполню этот запрос в server2.database1.views, у меня будет представление, поскольку все объекты скопированы в server2.database1. но я получаю некоторые ошибки: одна из них была функцией «форматирования», которую они использовали в sql server 2016, которая не была идентифицирована в 2005 году. Я изменил все эти функции «форматирования» и выполнил запрос, и теперь у меня остались следующие ошибки: Msg 15135, уровень 16, состояние 8, процедура sp_addextendedproperty, строка 37 [Batch Start Line 35] Объект недопустим. Расширенные свойства не разрешены для dbo.v_RASAM, или объект не существует.

Итак, представьте, что я хочу скопировать вызовы: dbo.v_RASAM И я уверен (потому что я проверил имя процедуры sp_addextendedproperty) sp_addextendedproperty существует! Итак, вопрос, который у меня есть, возможно, что процедура следует за некоторыми утверждениями, которые необходимо изменить, поскольку "view" имел функции, недоступные в sql server management studio 2005? (Это может звучать глупо, но я думаю о любой возможной причине, которая может вызвать это проблема) как я могу скопировать эти представления на server2.database1 любым другим способом, который я не пробовал?

любая помощь или мысль будут очень признательны! Большое вам спасибо за ваше время!


person Pedram Salamati    schedule 18.09.2016    source источник
comment
Можете ли вы получить доступ к двум экземплярам в одной сети? Если да, то вы можете подумать об использовании связанного Aerver для передачи данных.   -  person Mark Kram    schedule 19.09.2016
comment
есть шанс восстановить резервную копию с сервера 2016 на сервер 2016, затем изменить уровень совместимости с 2016 на 2005 в восстановленной резервной копии, а затем сделать резервную копию этой версии, что позволит вам восстановить ее до экземпляра 2005 года. По общему признанию, не пробовал, но стоит попробовать.   -  person CodeMonkey1313    schedule 20.09.2016


Ответы (2)


Вы можете попробовать использовать функцию создания сценариев, чтобы записать все объекты и данные (при необходимости) в файл сценария и выполнить его на целевом экземпляре.

В SSMS 2016 щелкните правой кнопкой мыши DB> Tasks> Generate Scripts ..

Под кнопкой «Дополнительно» в мастере есть несколько опций, которые вы, вероятно, захотите настроить.

person innomatics    schedule 19.09.2016
comment
Это будет работать, если моим целевым сервером был 2016, а моим источником был 2005. Но, как я уже сказал, по какой-то причине мне нужно перенести представления с 2016 на 2005 год, и я получаю ошибки в сценариях, потому что, например, функция форматирования не определяется в sql 2005 и У меня это есть в наших представлениях на сервере 2016 - person Pedram Salamati; 19.09.2016
comment
В этом случае у вас нет другого выбора, кроме как переписать любой объектный код, чтобы он был обратно совместим. - person innomatics; 20.09.2016
comment
Правильно, большое спасибо @innomatics! - person Pedram Salamati; 20.09.2016

В моем случае я нашел решение, изменив все функции «форматирования» в сценарии представления, который был форматом (Convert (int, databse.table.column), '#### - ## - ##') на Replace (convert (varchar (20), приведение (database.table.column как datetime).

Это действительно редкость, когда у кого-то возникает эта проблема, но единственный способ сделать это - перестроить запросы с нуля и попытаться вручную совместить 2012 или 2016 и 2005 годы!

person Pedram Salamati    schedule 20.09.2016