Я пытаюсь импортировать пользователей из пользовательской таблицы пользователей, которая существовала в системе, в таблицы поставщиков членства .net.
Я создал небольшое приложение, которое удаляет всех ранее существующих пользователей в таблицах членства .net, за исключением моей собственной учетной записи. Я написал это таким образом, чтобы при каждом запуске приложения оно очищало все, что я добавил, и снова вводило все данные пользователя. Этот сохраненный процесс работал в прошлом, но с тех пор, как он переключился на этот новый экземпляр SQL Server 2005 Enterprise, транзакция удаления продолжает откатываться
Вот хранимая процедура, которую я использую для очистки всех своих данных перед записью пользователей обратно в таблицы членства .net.
ALTER PROCEDURE [dbo].[usp_ClearAllUsers]
AS
begin
DECLARE @UserID uniqueidentifier
set @UserID = (SELECT UserId
FROM dbo.aspnet_Users
where (UserName = 'gianluca.sirianni'))
begin
Delete from dbo.aspnet_Membership WHERE (dbo.aspnet_Membership.UserID != @UserID)
end
begin
Delete from dbo.aspnet_UsersInRoles WHERE (dbo.aspnet_UsersInRoles.UserID != @UserID)
end
begin
Delete from dbo.aspnet_Profile WHERE ( dbo.aspnet_Profile.UserID != @UserID)
end
begin
Delete from dbo.aspnet_Users WHERE (dbo.aspnet_Users.UserID != @UserID)
end
end
Кто-нибудь может подсказать, почему мои данные могут откатываться? Я довольно свободно разбираюсь в выражениях SQL, но не в обработке транзакций самого сервера.
Обновление:
Я изменил вышеописанную процедуру следующим образом. Это правильно?
ALTER PROCEDURE [dbo].[usp_ClearAllUsers]
AS
BEGIN
DECLARE @UserID uniqueidentifier
SET @UserID = (SELECT UserId
FROM dbo.aspnet_Users
WHERE (UserName = 'gianluca.sirianni'))
BEGIN TRAN
DELETE FROM dbo.aspnet_Membership WHERE (dbo.aspnet_Membership.UserID != @UserID)
COMMIT TRAN
BEGIN TRAN
DELETE FROM dbo.aspnet_UsersInRoles WHERE (dbo.aspnet_UsersInRoles.UserID != @UserID)
COMMIT TRAN
BEGIN TRAN
DELETE FROM dbo.aspnet_Profile WHERE ( dbo.aspnet_Profile.UserID != @UserID)
COMMIT TRAN
BEGIN TRAN
DELETE FROM dbo.aspnet_Users WHERE (dbo.aspnet_Users.UserID != @UserID)
COMMIT TRAN
END