Проблема с базой данных SQL Server Copy - PullRequest
1 голос
/ 03 июня 2011

Я запускаю мастер копирования базы данных на экземпляре SQL Server 2008 R2.

База данных, которую я хочу скопировать, является базой данных SQL 2000.Я копирую эту базу данных в другой SQL SErver 2008 R2.

Мастер использует проверку подлинности SQL для обоих серверов, и оба являются системными администраторами.

При запуске я получаю следующую ошибку (К вашему сведению я пытался как скопировать логины, так и пропустить их):

Имя события: OnError Сообщение: ОШИБКА: errorCode = -1073548784 description = Выполнение запроса "sys.sp_addrolemember @rolename = N'RandomRoleName... "не удалось выполнить следующую ошибку:" Роль 'RandomRoleName' не существует в текущей базе данных. "Возможные причины сбоя: проблемы с запросом, неправильно задано свойство ResultSet, неправильно заданы параметры или неправильно установлено соединение.helpFile = helpContext = 0 idofInterfaceWithError = {C81DFC5A-3B22-4DA3-BD3B-10BF861A7F9C} StackTrace: в Microsoft.SqlServer.Management.Dts.DtsTransferProvider.ExecuteTransfer () в Microsoft.STlfer. () в Microsoft.Sql..SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer ()

Любая помощь будет принята с благодарностью!

Джим

Ответы [ 5 ]

2 голосов
/ 21 ноября 2011

Если у вас нет доступа к O / S и вы не можете его получить, другой вариант - создать отсутствующую роль (и) в фоновом режиме при копировании.

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

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

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

1 голос
/ 05 июня 2011

Мастер копирования пропустил некоторую защиту, и IIRC это вызвано тонкими различиями в таблицах безопасности, принципалах и т. Д. Между двумя версиями.

Честно говоря, самый простой способ - это сделать одну из этих двух:

  • резервное копирование / восстановление
  • отсоединение, копирование, прикрепление
1 голос
/ 04 июня 2011

Мое предложение не использовать мастер копирования базы данных.Создайте полную резервную копию базы данных на сервере 2000, а затем восстановите ее на сервере 2008.

Если вы воспользуетесь Google «Microsoft.SqlServer.Management.Dts.DtsTransferProvider.ExecuteTransfer Copy Database Wizard», вы найдете столькомногие люди получили ту же ошибку или другие почти идентичные ошибки смо ... никто, кажется, не прошел мимо этого.

Нельзя сказать, что это невозможно ... просто, восстановление резервной копии намного проще, чем мастер или устранение неполадок мастера.Удачи.

0 голосов
/ 02 июля 2018

Хотя ответ, использующий технику резервного копирования, решает проблему в целом, после того, как я несколько раз сталкивался с одной и той же проблемой, я смог отследить причину проблемы с помощью средства просмотра событий Windows и мастера копирования базы данных, используя агент SQL в конечном итоге создаст задание для запуска агента, после чего агент запустит , используя свои собственные учетные данные (т. е. учетные данные, которые вы можете посмотреть в службах Windows, в моем случае * 1003) *)

Все, что вам нужно сделать, это перейти в папку, где SQL Server создает файлы БД (например, C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\DATA по умолчанию для SQL 2014), и предоставить пользователю Windows Agent Windows право на запись / чтение в папке.

0 голосов
/ 03 января 2012

Причина может заключаться в том, что файл с новым именем базы данных уже существует в файловой системе.Мы столкнулись с этим, когда переименовали базу данных X в X_Old, и попытались скопировать базу данных Y в X. Это невозможно сделать, поскольку база данных X_Old по-прежнему связана с именем файла X.

Удалите конфликтующую базу данных или переименуйтефайл в файловой системе.

См. http://codecopy.wordpress.com/2012/01/03/error-while-copying-a-database/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...