2010-07-15 4 views
1

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

У меня было около 1120 хранимых процедур для копирования, поэтому на SQL Server 2005 я использовал мастер создания скриптов и создал скрипт (для SP) который я мог бы запустить на SQL Server 2008. Я запустил этот скрипт на SQL Server 2008, но было создано всего 1082 процедуры, большинство из них не создавались из-за проблем с зависимостями. Теперь я не уверен из 1120 SP, которые не были созданы.

Можете ли вы предложить что-нибудь о том, как исправить эту ситуацию?

ответ

3

SQL Server 2008 может восстанавливать файлы резервной копии SQL Server 2005. Почему бы вам просто не сделать операцию резервного копирования и восстановления? Если вы не хотите все это, просто создайте резервную копию и восстановите временную базу данных SQL 2008, а затем скопируйте нужные вам объекты.

0

Какие проблемы с зависимостью? Большую часть времени он просто будет жаловаться на проблемы с зависимостями, например, если вы попытаетесь выполнить SP из SP, который еще не создан. Но он все равно будет создан.

Это могут быть логины или такие?

Почему вы просто не делаете резервную копию и не восстанавливаете базу данных?

+0

Согласен. Кроме того, что касается проблем с зависимостями, иногда вам просто нужно запускать сценарий снова и снова, пока не будут созданы все зависимые объекты. Звук взломан, но метод грубой силы часто работает с SQL DDL. – mattmc3

0

Не проще ли просто удалить базу данных SQL 2005, скопировать файлы .mdf и .ldf для базы данных в папку данных SQL 2008, а затем подключить базу данных?

+2

Необходимо отключить базу данных в автономном режиме для отсоединения/подключения - не нужно для резервного копирования/восстановления –

2

Для того, чтобы узнать, какие хранимые процедуры отсутствуют и должны быть созданы заново, вы должны использовать SQL Diff инструменты, что-то вроде:

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

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

+1

И дешевым способом является создание собственного сопоставления с использованием библиотеки Microsoft.SqlServer.Management .NET. – mattmc3

+0

@ mattmc3: yes - но вам все равно нужно рассчитать ваши усилия, ваше время и время, которое вам понадобится, пока вы не будете свободны от ошибок, как эти коммерческие продукты ..... –