Лучший (самый простой) способ сделать дамп SQL Server и импортировать этот дамп на другой SQL Server

Я хотел бы добиться экспорта (дампа) базы данных в SQL Server с одного сервера и импортировать этот дамп на другой SQL Server и не обязательно с тем же именем схемы.

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


Я вижу несколько вариантов дизайна с разным уровнем прозрачности.

  1. Сделать отношения не загружаемыми с ленивой загрузкой (например, fetchType = FetchType.EAGER)
    • Это нарушает всю идею отложенной загрузки.
  2. Инициализируйте коллекции, используя Hibernate.initialize (proxyObj);
    • Это подразумевает относительно высокую степень связи с DAO
    • . Хотя мы можем определить интерфейс с помощью initialize , другие реализации не гарантируют предоставления каких-либо эквивалентов.
      • Я не пробовал использовать метод динамического прокси, хотя мне никогда не удавалось заставить @Transactional работать с самими постоянными объектами. Вероятно, из-за этого спящий режим - это работа с прокси-сервером.
      • Потеря контроля при фактическом выполнении транзакций
    • Обеспечение как ленивого, так и неленивого API, например loadData () и loadDataWithDeps ()
      • Заставляет приложение знать когда использовать какую подпрограмму, опять же сильная связь
      • Переполнение метода, loadDataWithA () , ...., loadDataWithX ()
    • Принудительный поиск зависимостей, например, только путем предоставления byId () операций
      • Требуется множество не объектно-ориентированных подпрограмм, например, findZzzById (zid) , а затем getYyyIds (zid) вместо z.getY ()
      • Может быть полезно получать каждый объект в коллекции по одному, если между транзакциями есть большие накладные расходы на обработку.
    • Сделать частью приложения @Transactional вместо только DAO
      • Возможные аспекты вложенных транзакций
      • Требуются процедуры, адаптированные для управления транзакциями (например, достаточно маленькие)
      • Небольшое влияние на программу, хотя может привести к большим транзакциям
    • Предоставьте DAO динамические профили выборки , например, loadData (id, fetchProfile);
      • Приложения должны знать, какой профиль использовать, когда
    • Тип транзакций AoP, например,
      • Требуются манипуляции с байтовым кодом или использование прокси.
      • Потеря контроля при выполнении транзакций
      • Черная магия, как всегда :)

Я пропустил какой-либо вариант?


Какой подход вы предпочитаете при попытке минимизировать влияние ленивых отношений на дизайн вашего приложения?

(Ой, извините за WoT )

86
задан Johan Sjöberg 17 February 2011 в 09:18
поделиться