Как вы загружаете базы данных SQL Server в среду общего хостинга?

StackOverflow https://stackoverflow.com/questions/245252

  •  05-07-2019
  •  | 
  •  

Вопрос

У нас есть общая проблема с переносом нашей базы данных SQL 2005 для разработки на общие веб-серверы компаний, занимающихся размещением веб-сайтов.

В идеале нам нужна система, которая передает структуру базы данных и данные в виде точной копии.

Обычно это достигается путем восстановления резервной копии.Но поскольку это общие SQL-серверы, мы не можем восстановить резервные копии – нам не предоставляется доступ к реальному компьютеру.

Мы могли бы сгенерировать скрипт для создания структуры базы данных, но тогда мы не смогли бы выполнить передачу данных через пункт меню Задачи / Импорт данных, потому что мы могли бы нарушить ограничения внешнего ключа, поскольку таблицы импортируются в порядке, противоречащем схеме базы данных.Кроме того, индексы могут не реплицироваться, если для них настроено автоматическое создание.

Таким образом, мы остаемся с грязной операцией:

  1. Создайте скрипт в SQL 2005, который генерирует базу данных в формате SQL 2000.
  2. Запустите скрипт для создания базы данных SQL 2000 в SQL 2000.
  3. Создайте скрипт на SQL 2000, который генерирует структуру базы данных БЕЗ индексов и внешних ключей.
  4. Запустите этот скрипт на рабочем сервере.Теперь у вас есть структура базы данных для загрузки данных.
  5. Используйте SQL 2005 для передачи данных на рабочий сервер вместе с задачами / данными импорта.
  6. Используйте SQL 2000 для создания сценария, который создает базу данных с индексами и ключами.
  7. Скопируйте только команды, которые генерируют индексы и внешние ключи.Они расположены после команд создания таблицы.Примечание:В SQL 2005 индексы и внешние ключи генерируются как одно целое и не могут быть легко разделены.
  8. Запустите этот скрипт в рабочей базе данных.

Вуаля!База данных загружается со всеми данными и ключами / ограничениями на месте.Какая грязная и подверженная ошибкам система.

Есть ли что-нибудь получше?

Это было полезно?

Решение

Скотт Гу написал несколько постов на эту тему :

Инструментарий публикации базы данных SQL Server для веб-хостинга

Другие советы

Сценарии генерации хороши для создания объектов базы данных, но не для передачи информации базы данных.Например, клиентские базы данных, в которых разработчику требуется предварительно заполнить некоторые данные.

Одна из проблем, с которой я столкнулся при этом, - это новые типы MAX в SQL Server 2005+.(nvarchar (max), varchar (max) и т.д.) Конечно, это хуже, когда вы на самом деле используете Sql Server Express, который не допускает экспорта, кроме создания ваших собственных сценариев для создания данных.

Я бы рекомендовал переключиться на хостинговую компанию, которая позволяет вам создавать резервные копии файлов по FTP и НЕ требует от вас использования ваших собственных скриптов.В этом весь смысл SQL Server, верно?Предоставить больше инструментов, более удобных в использовании.Если хостинговая компания уберет это, вы также можете перейти на MySQL из-за простоты сброса информации.

WebHost4Life - спасатель в этой категории.Они предлагают FTP на сервер базы данных для загрузки вашего файла резервной копии или файлов MDF и LDF для вложения!Я был так расстроен, когда увидел, что у GoDaddy есть аналогичное ограничение, о котором вы упомянули.Их инструмент не сказал мне, что это был плохой импорт, и я не мог понять, почему мой сайт возвращался с 500 ошибками.

Еще одно замечание:Я не уверен, что считается более безопасным.Я включил внешние подключения в GoDaddy и подключился к Management Studio, и я смог увидеть каждую базу данных на этом сервере!Я не смог получить к ним доступ, но теперь у меня есть эта информация.Двойной удар заключается в том, что GoDaddy требует, чтобы имя пользователя для базы данных совпадало с именем самой базы данных!теперь все, что вам нужно сделать, это спамить паролями против этих сотен баз данных!

Webhost4life, с другой стороны, имеет только вашу конкретную базу данных, отображаемую в Management Studio.И они позволяют вам выбрать свое собственное имя базы данных и пользователя, независимо друг от друга.Они добавляют один и тот же уникальный идентификатор только в конце имен пользователя и базы данных, чтобы они не конфликтовали с другими.

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

Я использовал инструменты сравнения RedGate с общим хостингом, и это работает хорошо.

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

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

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

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

Все это основано на предположении, что у вас есть некоторые возможности для реального запуска сложного скрипта, включающего множество файлов, а не просто привязаны к какой-то веб-панели управления, что может быть тем, что вы описываете, когда говорите "нам не предоставлен доступ к реальному компьютеру". Я чувствую, что вы не можете заниматься разработкой программного обеспечения на заказ и не иметь некоторые вид доступа к оболочке на сервере;хостинг-бизнес достаточно конкурентоспособен, так что вы, безусловно, сможете достаточно легко найти хостинга, дружественного к скриптам.

Проверьте, предоставляет ли компания webhsoting myLittleBackup - Небольшая резервная копия Это, безусловно, самое простое решение для "установки" базы данных с сервера разработки на общий sql server

Ответ для пользователей SQL Server 2008.

У меня была точно такая же проблема, как и с OP, но я использовал SQL Server 2008, а моей общей хостинговой компанией является GoDaddy.Вот решение для копирования DB + данных в базу данных GoDaddy...

В Visual Studio 2010 перейдите в Server Explorer (в VS Express, я думаю, это называется database Explorer).Щелкните правой кнопкой мыши на базе данных и выберите Опубликовать поставщику ...откроется мастер публикации базы данных ...пройдите через мастер, и он создаст файл xxx.sql на вашем локальном компьютере ...

Откройте SQL Server Management Studio и подключитесь к базе данных GoDaddy (вы должны были уже создать ее через панель управления GoDaddy на их веб-сайте)...

Откройте проводник Windows, найдите файл xxx.sql и дважды щелкните по нему.Скрипт должен открыться в SSMS.Выполните скрипт "в пределах соответствующей базы данных" ...вуаля, готово.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top