SQL Server 2000 Перенос логинов и ассоциированных ролей сервера и доступ к определенным базам данных

Я работаю для относительно небольшой компании менее 50 человек, и я, вероятно, наиболее близка к тому, что мы имеем к администратору базы данных... Я на самом деле программист, но это не так. У нас есть SQL Server 2000 с примерно 100 различными базами данных. Почти у всех из них есть связанный с SQL Login, и этот Login привязан к роли базы данных DB_OWNER для конкретной базы данных. У нас также есть несколько логинов, для которых задана роль базы данных DB_DATAREADER.

Мы приобрели совершенно новую машину (текущий 12 лет и обеспокоены аппаратным сбоем, который может привести к сокращению нашего бизнеса за недопустимое количество времени). Мы НЕ обновляем версию SQL Server. Мы будем придерживаться 2000.

Мой вопрос - это самый простой способ сделать это. Мои мысли - отделить все базы данных, скопировать их на новую машину и затем снова подключить каждую из баз данных. Я собираюсь сохранить имя машины и IP-адрес одинаково и просто удалить старый сервер, когда это будет сделано, поэтому ни одна строка нигде не должна быть изменена. Это не так уж плохо, и это легко сделать в выходные. Моя проблема с этим методом заключается в том, что после этого мне нужно удалить пользователя из базы данных, а затем воссоздать login с именем пользователя/паролем, а затем назначить соответствующую роль для каждого пользователя. Я только здесь 5 лет, и у меня нет всех возможных имен пользователей/паролей, которые использует каждая конкретная база данных и программа. Я не хочу нарушать существующие программы или переходить на каждую машину и обновлять ее... или, возможно, даже придется искать старый исходный код и перекомпилировать... да, некоторые из наших устаревших материалов имеют имя пользователя/пароль, жестко закодированные в источнике:(.

Итак, основной вопрос - это их script, которые я могу запустить на существующем сервере, который будет генерировать script для запуска на новом компьютере для настройки существующих logins, users, roles с тем же именем пользователя/паролем, что и раньше?

Если есть более простой способ передачи экземпляра сервера sql с одной машины на другую; Я весь во внимании.

FYI мы попытались создать VHD с существующего сервера для использования на виртуальной машине, но превысили этот маршрут. Мы никогда не могли заставить машину загрузиться в окна. Думайте, что это были проблемы с драйверами.

Ответ 1

Если вы не используете 64-разрядную версию SQL-сервера на конечном компьютере, ссылка, содержащаяся в первом комментарии, должна позволять вам успешно выполнять вход в систему.

В разделе "Полное разрешение для передачи логинов и паролей между различными версиями SQL Server" в эта ссылка предоставляет вам шаг за шагом, пошаговая процедура для достижения вашей цели.

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

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

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

Ответ 2

Я думал, что вы можете закрыть сервер, а затем скопировать все файлы, связанные с базой данных, на новый сервер и перезапустить новый sqlserver, используя эти скопированные файлы. Невозможно найти гораздо больше, но http://www.sqlservercentral.com/Forums/FindPost959329.aspx

Эта ссылка дает вам мнение о том, что делать http://support.microsoft.com/kb/314546

Учитывая маршрут VHD, вы также попробовали конкурирующий продукт? Вы могли бы попробовать VMWare, я слышал очень хорошие вещи об этом, и это может преуспеть там, где другие потерпели неудачу. http://www.vmware.com/nl/products/datacenter-virtualization/vsphere-hypervisor/overview.html

Ответ 3

Прошло много времени с тех пор, как я взломал SQL 2000... но он был взломан, таким образом, который не применяется к 2005 году и выше. Ниже приведены идеи и предложения, основанные на старых воспоминаниях о том, "что произойдет, если мы это сделаем..."; Я не могу дать вам конкретные команды или примеры, потому что у меня нет доступа к каким-либо экземплярам SQL 2000 только сейчас.

  • Создайте резервную копию базы данных "Новый" .
  • Два экземпляра SQL 2000 в двух разных блоках. Назовите их "старыми" и "новыми".
  • Завершить старый
  • Скопировать основные файлы базы данных (master.mdf, master.log или что-то еще, что они назвали) на новый сервер
  • Убедитесь, что у вас есть резервная копия базы данных "Новый" .
  • Прикрепите их к новому экземпляру в качестве базы данных пользователя. Переименуйте файлы, возможно, "OldMaster".
  • Найдите соответствующие системные базы данных в обеих основных базах. SysLogins? SysLoginX? Книги онлайн помогут здесь (эти системные таблицы были полностью пересмотрены с 2000 года).
  • INSERT... SELECT... из одной базы данных в другую. Я вполне уверен, что однажды это сделал. (Перед тем, как мы сбросили учетную запись SA, просто посмотрим, можем ли мы.) (О, не отбрасывайте учетную запись SA.)
  • Я думаю, что есть некоторые переключатели sp_options, которые вы должны перевернуть, чтобы вручную обновлять системные базы данных.
  • Вы сделали резервную копию базы данных "Новый" , не так ли? (Фактически, закрытие экземпляра, копирование основных файлов базы данных, а также запуск их снова работали нормально - просто выключитесь, скопируйте копии на свои испорченные файлы и снова запустите, и вы там, где вы были - до тех пор, пока вы не перепутались с другими базами данных.)

sp_change_users_login (используя "отчет", затем "autofix" ), должен оказаться неоценимым здесь - он может использоваться для синхронизации логинов (определений в основной базе данных) с пользователями (определения, хранящиеся в данных). Еще раз, не применимо, где я сейчас, но время было мне пришлось использовать эту процедуру каждый раз, когда мы перемещали базы данных из одной коробки в другую. Да. Был некоторая дорога script из входа с зашифрованным паролем, и запустил это "создать логин" в другом поле, но я не могу вспомнить, что это было. Просмотрите документацию для sp_CreateLogin или все, что было использовано для создания входа SQL на 2000.

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

Ответ 4

Я думаю, что самый простой способ - после того, как вы установили новый сервер (я бы сказал, переосмыслить обновление до sql2008 или выше по целому ряду причин).

И затем используйте мастер базы данных копирования. Выполните шаги, описанные в

http://msdn.microsoft.com/en-us/library/ms188664.aspx

привет, Жако