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