2016-06-10 2 views
-1

За все годы моего опыта я всегда подключался к базе данных, создавая новое соединение с использованием IP-адреса, имени пользователя и пароля. Недавно я присоединился к компании, где они используют настольное приложение, написанное в VB6, которое имеет серверный сервер SQL. Здесь, на практике, получите резервную копию последней версии сервера SQL и назовите ее как другую БД, используйте ее для тестирования.sql server - обработка данных на локальный - это необходимо

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

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

ответ

0

Ваша способность делать это действительно является функциональной и/или процедурной проблемой. Нет ничего технического, который бы мешал вам иметь одну, общую базу данных для dev/test. Задача состоит в том, что среда dev/test имеет тенденцию быть разрушительной и/или разрушительной.

Если у вас есть одна БД, используемая для всех требований к разработке и тестированию, вы, вероятно, почти не будете работать. Один разработчик, модифицирующий объект (SP, FN, table, view и т. Д.), Может потенциально разорвать всех остальных (или никого). Тестер, выполняющий стресс-тесты, заставит всех остальных рассердиться на медленные ответы, тайм-ауты и т. Д. Кто-то решит протестировать «Всегда зашифрованный» или даже когда-нибудь более простой, как TDE, может в конечном итоге сломать всех.

Окружающая среда Dev практически всегда нуждается в собственной песочнице перед регистрацией. Проверяется в коде/схеме, а затем тестируется в центральной среде, которая имитирует prod перед тем, как перейти к предварительному prod, который (идеально) идентичен prod. Это довольно просто, хотя каждая команда/компания будет иметь свои варианты.

Одна вещь, которую вы могли бы сделать сразу, это автоматизировать резервное копирование резервной копии базы данных prod, чтобы вы сбросили свежий .bak в общее место, где каждый может захватить и восстановить их собственный экземпляр. Это уменьшает влияние на вашу производственную систему и снижает потребление памяти. Еще одно преимущество заключается в том, что вы удаляете весь несущественный доступ к своей производственной базе данных - это действительно важно. Наконец, как только это стандартная операционная система, вы можете легко реализовать дополнительные элементы управления или задачи в будущем (например, восстановить защищенный экземпляр, обфускации/маскировать конфиденциальные данные, взять новую резервную копию для использования dev/test).

+0

Большое спасибо @SQLmojoe. Это была отличная идея, взяв резервную копию базы данных PROD. Кроме того, в моей компании есть задача сделать это. Мы придерживаемся строгих правил ISO, и любая копия Prod Data должна регулярно очищаться. Как вы думаете, будет ли какой-либо контроль над данными prod, когда все в команде восстанавливают его в своем собственном экземпляре? – jellyBeans

+0

Если у вас есть генерация «основной» резервной копии, которую используют все остальные, вы уже контролируете свежесть дистрибутива. Рабочие станции Dev/test более сложны. Вы можете установить политики домена и создать задания для периодического сканирования и уведомления о нарушениях. На всех рабочих станциях уже должны быть администраторы домена и, возможно, другие учетные записи для работы/мониторинга домена, добавленные в хост при инициализации (если нет, работайте с администраторами AD для этого). Не предлагайте автоматическую очистку (обновить или удалить) тех, кто использует задания. Вы рискуете очистить длительный стресс-тест и заставить людей действительно сходить с ума. – SQLmojoe

0

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

1

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

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

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

0

Спасибо за все ответы. Мы все имели дискуссию в нашей команде и придумали процесс, который подходит к нашей команде:

  • Существует мастер база данных резервного копирования и восстановление из самых последнего и стабильного источника
  • Только QA команда получила написать доступ к этой базе данных
  • Разработчики делают свою собственную тестовую базу данных с помощью резервного копирования Master
  • Если требуется новые данные, писать сценарии SQL, чтобы добавить его
  • Run блок & E2e тесты на их копии
  • Дайте новые тесты и сценарии для добавления новых данных (если таковые имеются) QA
  • QA запускает тесты и сценарии данных на Master
  • Когда тесты пройдены, если есть скрипт обновления SQL, то QA восстановления основная база данных из резервной копии (для удаления изменений данных, выполняемых при выполнении тестов), запускает SQL-скрипты для обновления данных, затем создает резервные копии в качестве нового мастера
  • Сценарии добавляются в исходный код, поэтому у нас есть история

Примечание: в качестве дополнительной защиты мы можем хранить копию самой первой базы данных Master где-то в другом месте. Поэтому, если кто-нибудь когда-либо делает что-то немое и развращает его, мы можем получить его и запустить все сценарии SQL, чтобы обновить его.

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