Guest User

Untitled

a guest
Aug 17th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.07 KB | None | 0 0
  1. Transaction deadlocked SqlMembershipProvider.CreateUser()
  2. ALTER PROCEDURE [dbo].[aspnet_Membership_CreateUser]
  3. @ApplicationName nvarchar(256),
  4. @UserName nvarchar(256),
  5. @Password nvarchar(128),
  6. @PasswordSalt nvarchar(128),
  7. @Email nvarchar(256),
  8. @PasswordQuestion nvarchar(256),
  9. @PasswordAnswer nvarchar(128),
  10. @IsApproved bit,
  11. @CurrentTimeUtc datetime,
  12. @CreateDate datetime = NULL,
  13. @UniqueEmail int = 0,
  14. @PasswordFormat int = 0,
  15. @UserId uniqueidentifier OUTPUT
  16. AS
  17. BEGIN
  18. DECLARE @ApplicationId uniqueidentifier
  19. SELECT @ApplicationId = NULL
  20.  
  21. DECLARE @NewUserId uniqueidentifier
  22. SELECT @NewUserId = NULL
  23.  
  24. DECLARE @IsLockedOut bit
  25. SET @IsLockedOut = 0
  26.  
  27. DECLARE @LastLockoutDate datetime
  28. SET @LastLockoutDate = CONVERT( datetime, '17540101', 112 )
  29.  
  30. DECLARE @FailedPasswordAttemptCount int
  31. SET @FailedPasswordAttemptCount = 0
  32.  
  33. DECLARE @FailedPasswordAttemptWindowStart datetime
  34. SET @FailedPasswordAttemptWindowStart = CONVERT( datetime, '17540101', 112 )
  35.  
  36. DECLARE @FailedPasswordAnswerAttemptCount int
  37. SET @FailedPasswordAnswerAttemptCount = 0
  38.  
  39. DECLARE @FailedPasswordAnswerAttemptWindowStart datetime
  40. SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 )
  41.  
  42. DECLARE @NewUserCreated bit
  43. DECLARE @ReturnValue int
  44. SET @ReturnValue = 0
  45.  
  46. DECLARE @ErrorCode int
  47. SET @ErrorCode = 0
  48.  
  49. DECLARE @TranStarted bit
  50. SET @TranStarted = 0
  51.  
  52. IF( @@TRANCOUNT = 0 )
  53. BEGIN
  54. BEGIN TRANSACTION
  55. SET @TranStarted = 1
  56. END
  57. ELSE
  58. SET @TranStarted = 0
  59.  
  60. EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName, @ApplicationId OUTPUT
  61.  
  62. IF( @@ERROR <> 0 )
  63. BEGIN
  64. SET @ErrorCode = -1
  65. GOTO Cleanup
  66. END
  67.  
  68. SET @CreateDate = @CurrentTimeUtc
  69.  
  70. SELECT @NewUserId = UserId FROM dbo.aspnet_Users WHERE LOWER(@UserName) = LoweredUserName AND @ApplicationId = ApplicationId
  71. IF ( @NewUserId IS NULL )
  72. BEGIN
  73. SET @NewUserId = @UserId
  74. EXEC @ReturnValue = dbo.aspnet_Users_CreateUser @ApplicationId, @UserName, 0, @CreateDate, @NewUserId OUTPUT
  75. SET @NewUserCreated = 1
  76. END
  77. ELSE
  78. BEGIN
  79. SET @NewUserCreated = 0
  80. IF( @NewUserId <> @UserId AND @UserId IS NOT NULL )
  81. BEGIN
  82. SET @ErrorCode = 6
  83. GOTO Cleanup
  84. END
  85. END
  86.  
  87. IF( @@ERROR <> 0 )
  88. BEGIN
  89. SET @ErrorCode = -1
  90. GOTO Cleanup
  91. END
  92.  
  93. IF( @ReturnValue = -1 )
  94. BEGIN
  95. SET @ErrorCode = 10
  96. GOTO Cleanup
  97. END
  98.  
  99. IF ( EXISTS ( SELECT UserId
  100. FROM dbo.aspnet_Membership
  101. WHERE @NewUserId = UserId ) )
  102. BEGIN
  103. SET @ErrorCode = 6
  104. GOTO Cleanup
  105. END
  106.  
  107. SET @UserId = @NewUserId
  108.  
  109. IF (@UniqueEmail = 1)
  110. BEGIN
  111. IF (EXISTS (SELECT *
  112. FROM dbo.aspnet_Membership m WITH ( UPDLOCK, HOLDLOCK )
  113. WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email)))
  114. BEGIN
  115. SET @ErrorCode = 7
  116. GOTO Cleanup
  117. END
  118. END
  119.  
  120. IF (@NewUserCreated = 0)
  121. BEGIN
  122. UPDATE dbo.aspnet_Users
  123. SET LastActivityDate = @CreateDate
  124. WHERE @UserId = UserId
  125. IF( @@ERROR <> 0 )
  126. BEGIN
  127. SET @ErrorCode = -1
  128. GOTO Cleanup
  129. END
  130. END
  131.  
  132. INSERT INTO dbo.aspnet_Membership
  133. ( ApplicationId,
  134. UserId,
  135. Password,
  136. PasswordSalt,
  137. Email,
  138. LoweredEmail,
  139. PasswordQuestion,
  140. PasswordAnswer,
  141. PasswordFormat,
  142. IsApproved,
  143. IsLockedOut,
  144. CreateDate,
  145. LastLoginDate,
  146. LastPasswordChangedDate,
  147. LastLockoutDate,
  148. FailedPasswordAttemptCount,
  149. FailedPasswordAttemptWindowStart,
  150. FailedPasswordAnswerAttemptCount,
  151. FailedPasswordAnswerAttemptWindowStart )
  152. VALUES ( @ApplicationId,
  153. @UserId,
  154. @Password,
  155. @PasswordSalt,
  156. @Email,
  157. LOWER(@Email),
  158. @PasswordQuestion,
  159. @PasswordAnswer,
  160. @PasswordFormat,
  161. @IsApproved,
  162. @IsLockedOut,
  163. @CreateDate,
  164. @CreateDate,
  165. @CreateDate,
  166. @LastLockoutDate,
  167. @FailedPasswordAttemptCount,
  168. @FailedPasswordAttemptWindowStart,
  169. @FailedPasswordAnswerAttemptCount,
  170. @FailedPasswordAnswerAttemptWindowStart )
  171.  
  172. IF( @@ERROR <> 0 )
  173. BEGIN
  174. SET @ErrorCode = -1
  175. GOTO Cleanup
  176. END
  177.  
  178. IF( @TranStarted = 1 )
  179. BEGIN
  180. SET @TranStarted = 0
  181. COMMIT TRANSACTION
  182. END
  183.  
  184. RETURN 0
  185.  
  186. Cleanup:
  187.  
  188. IF( @TranStarted = 1 )
  189. BEGIN
  190. SET @TranStarted = 0
  191. ROLLBACK TRANSACTION
  192. END
  193.  
  194. RETURN @ErrorCode
  195.  
  196. END
Add Comment
Please, Sign In to add comment