2009-11-16 4 views
1

Мне было интересно, какие мои варианты предназначены для копирования базы данных SQL Server. Если это повторение, я удалю свой вопрос, но при поиске не смог найти ответ.Как скопировать базу данных SQL Server

Это то, что я уже пробовал:

-Write базы данных на SQL-скрипт.
Когда я это делаю, я всегда сталкиваюсь с проблемой, когда мне приходится вручную настраивать вещи. Как проблемы с ключами или конфликтами сортировки.

Также это кажется очень медленным. Мой последний файл сценария - 1.5Mb, но для его запуска требуется 1 час. Также досадно, что ошибка на 90%.

В основном я получаю его для работы с использованием sql-скриптов, но мне кажется, что я трачу много времени, пытаясь исправить небольшую ошибку и ожидая выполнения sql.

-Использование функции экспорта в Microsoft SQL Management Server Studio
Если я правильно это не копирует процедуры магазина, представления и/или ключи.

-detach/Attach
Правильно ли думать, что это в большинстве случаев не возможно на общих хостингов, где вы можете получить только одну базу данных? При попытке этого я столкнулся с проблемами разрешения.

Это все, что я пробовал.

Спасибо заранее,

Pickels

+0

Вы попробовали резервное копирование и восстановление? –

+0

Кажется, мои 2 общедоступных хостинга не любят делать резервные копии. Если я не пропустил что-то действительно очевидное. – Pickels

ответ

5

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

Но в конечном счете это проблема процесса разработки. Вы никогда не должны развиваться, изменяя базу данных, но вместо этого создавайте сценарии, находящиеся под контролем источника, для применения любого изменения схемы приложения (включая все процедуры и все данные каталога). Приложение должно быть способно обновить схему базы данных из этих сценариев, включая начальное развертывание. Моя рекомендация - использовать определенную версию приложения в расширенных свойствах и иметь сценарии для обновления версии схемы приложения: Version Control and your Database.

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

+0

Я писал что-то о контроле версий, непрерывной интеграции и повторяемости процесса. Но вы получили это раньше: D +1 –

+0

Я пытаюсь начать работу с контролем версий, поэтому этот ответ был действительно замечательным, спасибо. – Pickels

5

Я считаю, самый простой способ заключается в использовании резервного копирования/восстановления вариант. Резервное копирование базы данных, копирование файла на новый сервер и последующее восстановление. Сначала необходимо создать пустую базу на втором сервере, но вам не нужно определять какие-либо таблицы или что-то еще. Затем щелкните правой кнопкой мыши по новой пустой базе данных и выберите «Восстановить и восстановить» из файла, который вы создали на первом сервере.

При восстановлении вам может потребоваться перейти на страницу «Параметры» и установить путь «Восстановить как», если исходные файлы базы данных были сохранены в пути, который не существует на новом сервере или вы хотите восстановить его в другом месте. По умолчанию он попытается восстановить базу данных по тому же пути, что и на исходном сервере.

+0

Зачем вам нужно создать пустую базу данных на втором сервере? Вы можете выполнить команду RESTORE DATABASE без первой пустой оболочки. –

+0

Вам все равно нужно выбрать базу данных назначения, не так ли? Насколько я знаю, вы не можете создать новую базу данных на том же шаге, по крайней мере, не через SQL Server Management. Возможно, вы правы, но я думал, что база данных должна существовать в первую очередь. – TLiebe

+0

Нет, экран восстановления позволяет вручную ввести имя восстановленной БД и выбрать, где находится файл резервной копии. Нет необходимости восстанавливать существующую пустую. – MartW

0

Попробуйте полное резервное копирование и восстановление.

3

Если вы собираетесь перенестись на MS SQL Server 2008, у вас есть опция «Копировать базу данных», которую вы можете выбрать для копирования всех или выбранных баз данных.

Щелкните правой кнопкой мыши по базе данных -> Задачи -> Копировать базу данных. Пройдите мастер и выберите «Снять и Прикрепить» -метод или «Метод SQL Managment» (если вы хотите, чтобы база данных оставалась в сети).

Но обратите внимание, что это работает только, если ваш SQL назначения является MsSQL 2008.

0

Попробуйте DBSourceTools. http://dbsourcetools.codeplex.com
Его открытый исходный код, специально предназначенный для сценария всей базы данных - таблицы, представления, procs на диск.
Тогда все, что вам нужно сделать, это создать цель развертывания.
Нажмите на развертывание - и инструмент скопирует вашу базу данных в новую цель.
С помощью SQL Bulk copy для загрузки данных он может сделать 10000 записей за несколько секунд.

Удачи

Смежные вопросы