0
我试图将用户从系统中存在的自定义用户表导入到.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