Я пробовал это с SQL Server 2012, без радости:
Как я могу скопировать экземпляр SQL Server 2008 на другой сервер?
SQL не запускался на целевом сервере, он сначала жаловался на невозможность записи в файлы журнала ошибок, а теперь жалуется на внутреннюю ошибку.
Я думаю, что это, вероятно, вещь ACL / права, но безопасность выглядит так же, все, что я сделал, это перезаписал существующий каталог установки SQL каталогом SQL с исходного сервера.
Исходный сервер - Windows 2008 R2, целевой сервер - Windows 2012 R2, если это имеет значение.
Да, я знаю, как это сделать "sp_help_revlogin", но у нас много пользователей, и я не хочу бегать ко всем и получать их пароль
Это ПРОСТАЯ операция с MSql, почему, черт возьми, MS должна вставлять всевозможные скрытые права и мусор в свою файловую систему? Когда SQL-сервер выключен, база данных должна быть просто другим файлом ИМХО.
Кроме того, если SQL-сервер когда-либо делает дамп, мне бы очень хотелось, чтобы мне не приходилось восстанавливать все 600 ГБ из резервной копии, если я могу просто восстановить 80 ГБ в файлах базы данных SQL, понимаете?
SQL DBA здесь. Я думаю, вы не понимаете, как sp_help_revlogin
работает: http://support.microsoft.com/kb/918992
Это набор сценариев, которые вы запускаете на исходном сервере, на выходе будет большой длинный сценарий для воссоздания всех логинов, включая (зашифрованные) пароли.
Возьмите этот сценарий и запустите его на целевом сервере, он воссоздает все логины, и ваши восстановленные (или подключенные) базы данных должны их легко распознать.
5-минутный процесс, максимум, если вы не хотите просмотреть список вывода и включить / исключить отдельные логины.
Я не знаю, что вы увязли с копированием всей папки, полной файлов SQL, вам, возможно, придется перемотать там шаг или два, если вы не просто перезаписали файлы из только что установленного экземпляра.
Мой предпочтительный метод:
Удачи. Вы также можете найти более подробную справку на dba.Stackexchange.com.
Я думаю, что это, вероятно, вещь ACL / права, но безопасность выглядит так же, все, что я сделал, это перезаписал существующий каталог установки SQL каталогом SQL с исходного сервера.
Почему вы просто не сделали резервную копию и не восстановили базы данных?
почему, черт возьми, MS должна втыкать всевозможные скрытые права и мусор в свою файловую систему? Когда SQL-сервер выключен, база данных должна быть просто другим файлом ИМХО.
Винить Microsoft в вашем непонимании - это не круто. Это не их вина, что вы выбрали неподдерживаемый метод передачи баз данных. Базы данных - это просто файлы. Вы можете легко сделать резервную копию и восстановить их или отсоединить их, скопировать на новый сервер и присоединить.
Кроме того, если SQL-сервер когда-либо делает дамп, мне бы очень хотелось, чтобы мне не приходилось восстанавливать все 600 ГБ из резервной копии, если я могу просто восстановить 80 ГБ в файлах базы данных SQL, понимаете?
Конечно, это легко сделать, но сначала вы должны знать, что делаете.
Ни SQL Server, ни Microsoft в этом не виноваты.
Ваши базы данных ЯВЛЯЮТСЯ «просто» файлами. Если вы щелкните правой кнопкой мыши базу данных в SSMS и выберите свойства, вы сможете найти эту информацию. Обычно это файл базы данных (.mdf) и журнал транзакций (.ldf).
Я думаю, что вы ошиблись в том, что вам не следует копировать все содержимое пути установки. Вместо этого вы должны скопировать только файлы .mdf и .ldf обратно в то же место, где они были на исходном сервере.
Обычно я просто перемещаю отдельные файлы базы данных, которые мне нужны, и повторно добавляю их вручную в SQL. Однако я считаю, что если вы скопируете системные базы данных, вы перенесете всю конфигурацию SQL. Самым важным здесь является то, что все базы данных находятся на том же пути, что и изначально на исходном сервере, поскольку эта информация будет содержаться в системных базах данных.
Что касается резервного копирования и восстановления - ДА, вы можете просто восстановить файлы .mdf и .ldf. Но различные методы резервного копирования и восстановления SQL - это уже другая тема.
Конечно, при всем этом вам нужно убедиться, что служба SQL-сервера остановлена или база данных отключена.