Извините, что этот пост такой длинный, за такой прямой вопрос. Я работаю над этим уже почти 3 дня, и это сводит меня с ума, поэтому я стараюсь излагать как можно больше деталей, чтобы кто-нибудь смог вытащить меня из этого кошмара!
У меня есть два файла резервных копий базы данных SQL Server 2008 R2 с общего хоста: database-1.bak
и database-2.bak
. Каждая из этих баз данных была настроена на разных учетных записях общего хостинга на одном и том же общем сервере с одним пользователем базы данных каждый (с именами «database-1» и «database-2» соответственно). Структура баз данных идентична, а данные - нет. Database-1
имеет содержимое, database-2
пусто. Я хочу скопировать все данные из database-1
в database-2
, а затем повторно загрузить database-2
обратно на общий хост. Тогда две базы данных должны быть абсолютно одинаковыми, но database-1
должна принадлежать схеме database-1
, а database-2
- схеме database-2
.
Я вошел в SQL Server Management Studio Express 2008 R2 как sa
и восстановил эти базы данных, поэтому у меня теперь есть две базы данных, одна из которых содержит множество таблиц, например, например. database-1.tblTest
, database-1.tblTest2
и т. Д .; а другой - с множеством таблиц, называемых, например, database-2.tblTest
, database-2.tblTest2
и т. Д. Таким образом, все таблицы в database-1
«принадлежат» схеме database-1
(имена таблиц начинаются с database-1.
), а все таблицы в database-2
являются ' принадлежит схеме database-2
(к именам таблиц добавляется database-2.
).
Я попытался щелкнуть правой кнопкой мыши database-1
и выбрать Tasks > Export Data
и экспортировать его в database-2
. Странно, что, когда он автоматически отображает объекты для экспорта, он делает это:
database-1.tblTest (on 'source' database-1) -> database-1.tblTest (on 'destination' database-2).
Это странно, потому что я надеюсь, что он сделает это вместо этого:
database-1.tblTest (on 'source' database-1) -> database-2.tblTest (on 'destination' database-2).
Я хотел бы надеяться, что таблицы в базе данных-2 сохранят владельца database-2.
. Если я сопоставлю каждую из таблиц следующим образом:
database-1.tblTest -> database-2.tblTest
Экспорт не выполнен. Если я сохраню отображение по умолчанию (database-1.tblTest -> database-1.tblTest
), оно выполнится успешно, но тогда у меня будет целая загрузка таблиц в database-2
, которые принадлежат схеме database-1
.
Это сейчас, где я нахожусь. Database-1
такое же, как было, когда я его восстановил. Но database-2
теперь имеет набор таблиц с добавлением database-2.
и тот же набор таблиц с добавлением database-1.
.
Это проблема, потому что, когда я пытаюсь повторно загрузить database-2
обратно на хост-сервер, он выдает ошибку, потому что схема пытается использовать database-1
, который находится на том же сервере, но с другой учетной записью. Поэтому мне нужно, чтобы таблицы в database-2
содержали владельца схемы database-2
, но просто заполнялись данными из database-1
.
Я попытался выполнить такой запрос, чтобы попытаться изменить схему в моих импортированных таблицах в database-2
с database-1
на database-2
:
USE [database-2]
ALTER SCHEMA [database-2] TRANSFER [database-1.tblTest]
Однако это только ошибки:
Сообщение 15151, Уровень 16, Состояние 1, Строка 2
Не удается найти объект «database-1.tableTest», потому что он
не существует или у вас нет
разрешение.
Я вошел в Management studio как sa
, поэтому разрешения не должны быть проблемой.
Может кто-нибудь пролить свет на то, как просто вставить эти данные в database-2
и сохранить владельца схемы таким же?
Любая помощь будет высоко оценена, спасибо!