Передача записей об участии asp.net одного сайта с одного сервера SQL на другой - PullRequest
3 голосов
/ 11 февраля 2012

Мне нужно перенести данные о членстве asp.net одного веб-сайта из базы данных сервера SQL, в которой есть записи для нескольких сайтов, на другой сервер SQL.

Я искал некоторые существующие / известные способы сделать это?Я попробовал утилиту Web Deploy, но не смог найти какие-либо способы передачи записей базы данных.

Любая помощь будет высоко ценится.

Спасибо.

1 Ответ

3 голосов
/ 11 февраля 2012

База данных членства ASP.NET - это просто «обычная» база данных SQL Server, поэтому вопрос заключается в том, «как перенести базу данных SQL Server с одного сервера на другой, используя только часть данных, которые она содержит».

1) Поскольку база данных на старом сервере содержит информацию о членстве более чем одного сайта, вы должны знать, как найти данные «вашего» сайта (того, который вы хотите перенести) в базу данных.

Я нашел информацию о схеме базы данных членства ASP.NET в этом руководстве на сайте ASP.NET.
Прокрутите вниз до «Шаг 3: Посмотрите на основные таблицы схемы».
Это ключевая информация, особенно предложения, которые я выделил жирным шрифтом:

Таблица aspnet_Applications определяет эти разделы. каждый приложение, которое использует базу данных для хранения информации учетной записи пользователя представлена ​​строкой в ​​этой таблице. Таблица aspnet_Applications имеет четыре столбца: ApplicationId, ApplicationName, LoweredApplicationName и Description. ApplicationId из введите uniqueidentifier и является первичным ключом таблицы; ApplicationName предоставляет уникальное, понятное человеку имя для каждого применение.

Другие таблицы, связанные с членством и ролями, ссылаются на ApplicationId поле в aspnet_Applications. Например, aspnet_Users таблица, которая содержит запись для каждой учетной записи пользователя, имеет поле внешнего ключа ApplicationId; То же самое для aspnet_Roles Таблица. Поле ApplicationId в этих таблицах указывает раздел приложения, к которому принадлежит учетная запись пользователя или роль.

Вкратце: вам нужно найти сайт, который вы хотите перенести, в таблицу aspnet_Applications, взять идентификатор из столбца ApplicationId и найти все строки с одинаковым ApplicationId во всех других таблицах.

2) Теперь, когда вы знаете, как найти данные вашего сайта в базе данных, вы можете переместить данные на новый сервер. В этом нет ничего специфического для ASP.NET, это просто простые вещи SQL Server - вам просто нужно создать ту же базу данных на новом сервере, но только с данными для вашего сайта.

Я могу придумать два способа сделать это:

Путь 1:

  1. Резервное копирование Вся база данных на старом сервере
  2. Восстановить эту резервную копию на новом сервере
  3. Теперь у вас есть полная база данных на новом сервере, но она содержит данные для всех сайтов, а не только того, который вы хотите
    -> Вы должны удалить данные для всех других сайтов из базы данных на новом сервере.
    Самый простой способ сделать это с помощью SQL - просто выполнить это для каждой таблицы в базе данных:
    delete from aspnet_Users where ApplicationID <> 'X'
    (где X - это ApplicationID вашего сайта из таблицы aspnet_Applications)

Способ 2:

  1. Создать новую пустую базу данных о членстве на новом сервере
  2. Настройка старого SQL Server в качестве Связанного сервера в новом SQL Server
    (это позволяет запускать SQL на новом сервере, который выбирает данные со старого сервера)
  3. Скопируйте данные для вашего сайта из каждой таблицы старого сервера на новый сервер. Просто выполните следующий SQL для каждой таблицы:
    insert into aspnet_Users<br> select * from [Name_of_old_server].[Name_of_old_database].dbo.aspnet_Users<br> where ApplicationID = 'X'
    (где X - это ApplicationID вашего сайта из таблицы aspnet_Applications)
  4. Теперь вы можете снова удалить связанный сервер (созданный на шаге 2) - это было сделано только для передачи данных только один раз.
...