asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件

原文:asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件

现象1.asp.net使用自定义sql server身份验证数据库,在A机器新增用户A,可以登录成功。把程序复制到B机器上,B机器读不到A用户信息,也无法使用A用户登录。B机器上新增的用户在A机器上也读不到。

现象2.在vs2005环境下运行程序,A用户登录成功,换在IIS下浏览,A用户登录失败。

原因在于web.config中自定义的身份验证提供者中缺少了applicationname的设置

<membership defaultProvider="CustomizedMembershipProvider">

      <providers>

        <add connectionStringName="MyDB" minRequiredPasswordLength="1"

           minRequiredNonalphanumericCharacters="0" applicationName="/"

           name="CustomizedMembershipProvider" type="System.Web.Security.SqlMembershipProvider" />

      </providers>

    </membership>

    <roleManager cacheRolesInCookie="true" cookieName=".ASPROLES"

       cookieRequireSSL="true" defaultProvider="CustomizedRolelProvider">

      <providers>

        <add connectionStringName="MyDB" applicationName="/" name="CustomizedRolelProvider"

           type="System.Web.Security.SqlRoleProvider" />

      </providers>

    </roleManager>

系统建立新用户的时候,根据applicationname中的路径建立不同的用户组,如果没有指定applicationname,系统会以当前项目所在的文件夹名称,例如"prj_asp",作为applicationname建立用户组,在使用iis浏览时往往会将当前项目所在的文件夹设置为网站的根目录,也就是"/",系统就会寻找名为"/"的applicationname的用户组,结果就是找不到。所以在wen.config中设置 applicationName="/"可以解决这个问题。

用以上方法还是没有解决问题,我就把C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727下的这三个文件执行到需要的数据库服务器上



这三个文件:InstallCommon.SQL  , InstallMembership.SQL , InstallRoles.SQL

/**********************************************************************/

/* InstallCommon.SQL                                                  */

/*                                                                    */

/* Installs the tables, triggers and stored procedures necessary for  */

/* supporting some features of ASP.Net                                */

/*

** Copyright Microsoft, Inc. 2003

** All Rights Reserved.

*/

/**********************************************************************/

PRINT '---------------------------------------'

PRINT 'Starting execution of InstallCommon.SQL'

PRINT '---------------------------------------'

GO

SET QUOTED_IDENTIFIER OFF

SET ANSI_NULLS ON         -- We don't want (NULL = NULL) == TRUE

GO

SET ANSI_PADDING ON

GO

SET ANSI_NULL_DFLT_ON ON

GO

DECLARE @dbname nvarchar(128)

DECLARE @dboptions nvarchar(1024)

SET @dboptions = N'/**/'

SET @dbname = N'aspnetdb'

IF (NOT EXISTS (SELECT name

                FROM master.dbo.sysdatabases

                WHERE name = @dbname))

BEGIN

  PRINT 'Creating the ' + @dbname + ' database...'

  DECLARE @cmd nvarchar(500)

  SET @cmd = 'CREATE DATABASE [' + @dbname + '] ' + @dboptions

  EXEC(@cmd)

END

GO

USE [aspnetdb]

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

-- Create the temporary permission tables and stored procedures

-- TO preserve the permissions of an object.

--

-- We use this method instead of using CREATE (if the object

-- doesn't exist) and ALTER (if the object exists) because the

-- latter one either requires the use of dynamic SQL (which we want to

-- avoid) or writing the body of the object (e.g. an SP or view) twice,

-- once use CREATE and again using ALTER.

IF (OBJECT_ID('tempdb.#aspnet_Permissions') IS NOT NULL)

BEGIN

    DROP TABLE #aspnet_Permissions

END

GO

CREATE TABLE #aspnet_Permissions

(

    Owner     sysname,

    Object    sysname,

    Grantee   sysname,

    Grantor   sysname,

    ProtectType char(10),

    [Action]    varchar(20),

    [Column]    sysname

)

INSERT INTO #aspnet_Permissions

EXEC sp_helprotect

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Setup_RestorePermissions')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_Setup_RestorePermissions

GO

CREATE PROCEDURE [dbo].aspnet_Setup_RestorePermissions

    @name   sysname

AS

BEGIN

    DECLARE @object sysname

    DECLARE @protectType char(10)

    DECLARE @action varchar(20)

    DECLARE @grantee sysname

    DECLARE @cmd nvarchar(500)

    DECLARE c1 cursor FORWARD_ONLY FOR

        SELECT Object, ProtectType, [Action], Grantee FROM #aspnet_Permissions where Object = @name

OPEN c1

FETCH c1 INTO @object, @protectType, @action, @grantee

    WHILE (@@fetch_status = 0)

    BEGIN

        SET @cmd = @protectType + ' ' + @action + ' on ' + @object + ' TO [' + @grantee + ']'

        EXEC (@cmd)

        FETCH c1 INTO @object, @protectType, @action, @grantee

    END

CLOSE c1

    DEALLOCATE c1

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Setup_RemoveAllRoleMembers')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_Setup_RemoveAllRoleMembers

GO

CREATE PROCEDURE [dbo].aspnet_Setup_RemoveAllRoleMembers

    @name   sysname

AS

BEGIN

    CREATE TABLE #aspnet_RoleMembers

    (

        Group_name      sysname,

        Group_id        smallint,

        Users_in_group  sysname,

        User_id         smallint

    )

INSERT INTO #aspnet_RoleMembers

    EXEC sp_helpuser @name

DECLARE @user_id smallint

    DECLARE @cmd nvarchar(500)

    DECLARE c1 cursor FORWARD_ONLY FOR

        SELECT User_id FROM #aspnet_RoleMembers

OPEN c1

FETCH c1 INTO @user_id

    WHILE (@@fetch_status = 0)

    BEGIN

        SET @cmd = 'EXEC sp_droprolemember ' + '''' + @name + ''', ''' + USER_NAME(@user_id) + ''''

        EXEC (@cmd)

        FETCH c1 INTO @user_id

    END

CLOSE c1

    DEALLOCATE c1

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

-- Create the aspnet_Applications table.

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Applications')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_Applications table...'

  CREATE TABLE [dbo].aspnet_Applications (

    ApplicationName         nvarchar(256)               NOT NULL UNIQUE,

    LoweredApplicationName  nvarchar(256)               NOT NULL UNIQUE,

    ApplicationId           uniqueidentifier            PRIMARY KEY NONCLUSTERED DEFAULT NEWID(),

    Description             nvarchar(256)       )

  CREATE CLUSTERED INDEX aspnet_Applications_Index ON [dbo].aspnet_Applications(LoweredApplicationName)

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

-- Create the aspnet_Users table

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Users')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_Users table...'

  CREATE TABLE [dbo].aspnet_Users (

    ApplicationId    uniqueidentifier    NOT NULL FOREIGN KEY REFERENCES [dbo].aspnet_Applications(ApplicationId),

    UserId           uniqueidentifier    NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(),

    UserName         nvarchar(256)       NOT NULL,

    LoweredUserName  nvarchar(256)      NOT NULL,

    MobileAlias      nvarchar(16)        DEFAULT NULL,

    IsAnonymous      bit                 NOT NULL DEFAULT 0,

    LastActivityDate DATETIME            NOT NULL)

CREATE UNIQUE CLUSTERED INDEX aspnet_Users_Index ON [dbo].aspnet_Users(ApplicationId, LoweredUserName)

   CREATE NONCLUSTERED INDEX aspnet_Users_Index2 ON [dbo].aspnet_Users(ApplicationId, LastActivityDate)

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

-- Create the aspnet_SchemaVersions table

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_SchemaVersions')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_SchemaVersions table...'

  CREATE TABLE [dbo].aspnet_SchemaVersions (

    Feature                  nvarchar(128)  NOT NULL PRIMARY KEY CLUSTERED( Feature, CompatibleSchemaVersion ),

    CompatibleSchemaVersion  nvarchar(128) NOT NULL,

    IsCurrentVersion         bit            NOT NULL )

END

GO

/*************************************************************/

/*************************************************************/

------------- Create Stored Procedures

/*************************************************************/

/*************************************************************/

-- RegisterSchemaVersion SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_RegisterSchemaVersion')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_RegisterSchemaVersion

GO

CREATE PROCEDURE [dbo].aspnet_RegisterSchemaVersion

    @Feature                   nvarchar(128),

    @CompatibleSchemaVersion   nvarchar(128),

    @IsCurrentVersion          bit,

    @RemoveIncompatibleSchema  bit

AS

BEGIN

    IF( @RemoveIncompatibleSchema = 1 )

    BEGIN

        DELETE FROM dbo.aspnet_SchemaVersions WHERE Feature = LOWER( @Feature )

    END

    ELSE

    BEGIN

        IF( @IsCurrentVersion = 1 )

        BEGIN

            UPDATE dbo.aspnet_SchemaVersions

            SET IsCurrentVersion = 0

            WHERE Feature = LOWER( @Feature )

        END

    END

INSERT  dbo.aspnet_SchemaVersions( Feature, CompatibleSchemaVersion, IsCurrentVersion )

    VALUES( LOWER( @Feature ), @CompatibleSchemaVersion, @IsCurrentVersion )

END

GO

DECLARE @command nvarchar(4000)

SET @command = 'GRANT EXECUTE ON [dbo].aspnet_Setup_RestorePermissions TO ' + QUOTENAME(user)

EXEC (@command)

SET @command = 'GRANT EXECUTE ON [dbo].aspnet_RegisterSchemaVersion TO ' + QUOTENAME(user)

EXEC (@command)

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_RegisterSchemaVersion'

GO

-- Create common schema version

EXEC [dbo].aspnet_RegisterSchemaVersion N'Common', N'1', 1, 1

GO

/*************************************************************/

/*************************************************************/

-- CheckSchemaVersion SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_CheckSchemaVersion')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_CheckSchemaVersion

GO

CREATE PROCEDURE [dbo].aspnet_CheckSchemaVersion

    @Feature                   nvarchar(128),

    @CompatibleSchemaVersion   nvarchar(128)

AS

BEGIN

    IF (EXISTS( SELECT  *

                FROM    dbo.aspnet_SchemaVersions

                WHERE   Feature = LOWER( @Feature ) AND

                        CompatibleSchemaVersion = @CompatibleSchemaVersion ))

        RETURN 0

RETURN 1

END

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_CheckSchemaVersion'

GO

/*************************************************************/

/*************************************************************/

-- CreateApplication SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Applications_CreateApplication')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_Applications_CreateApplication

GO

CREATE PROCEDURE [dbo].aspnet_Applications_CreateApplication

    @ApplicationName      nvarchar(256),

    @ApplicationId        uniqueidentifier OUTPUT

AS

BEGIN

    SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF(@ApplicationId IS NULL)

    BEGIN

        DECLARE @TranStarted   bit

        SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

        BEGIN

         BEGIN TRANSACTION

         SET @TranStarted = 1

        END

        ELSE

         SET @TranStarted = 0

SELECT  @ApplicationId = ApplicationId

        FROM dbo.aspnet_Applications WITH (UPDLOCK, HOLDLOCK)

        WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF(@ApplicationId IS NULL)

        BEGIN

            SELECT  @ApplicationId = NEWID()

            INSERT  dbo.aspnet_Applications (ApplicationId, ApplicationName, LoweredApplicationName)

            VALUES  (@ApplicationId, @ApplicationName, LOWER(@ApplicationName))

        END

IF( @TranStarted = 1 )

        BEGIN

            IF(@@ERROR = 0)

            BEGIN

         SET @TranStarted = 0

         COMMIT TRANSACTION

            END

            ELSE

            BEGIN

                SET @TranStarted = 0

                ROLLBACK TRANSACTION

            END

        END

    END

END

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_Applications_CreateApplication'

GO

/*************************************************************/

/*************************************************************/

-- UnRegisterSchemaVersion SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UnRegisterSchemaVersion')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_UnRegisterSchemaVersion

GO

CREATE PROCEDURE [dbo].aspnet_UnRegisterSchemaVersion

    @Feature                   nvarchar(128),

    @CompatibleSchemaVersion   nvarchar(128)

AS

BEGIN

    DELETE FROM dbo.aspnet_SchemaVersions

        WHERE   Feature = LOWER(@Feature) AND @CompatibleSchemaVersion = CompatibleSchemaVersion

END

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_UnRegisterSchemaVersion'

GO

/*************************************************************/

/*************************************************************/

-- CreateUser SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_CreateUser')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_Users_CreateUser

GO

CREATE PROCEDURE [dbo].aspnet_Users_CreateUser

    @ApplicationId    uniqueidentifier,

    @UserName         nvarchar(256),

    @IsUserAnonymous  bit,

    @LastActivityDate DATETIME,

    @UserId           uniqueidentifier OUTPUT

AS

BEGIN

    IF( @UserId IS NULL )

        SELECT @UserId = NEWID()

    ELSE

    BEGIN

        IF( EXISTS( SELECT UserId FROM dbo.aspnet_Users

                    WHERE @UserId = UserId ) )

            RETURN -1

    END

INSERT dbo.aspnet_Users (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate)

    VALUES (@ApplicationId, @UserId, @UserName, LOWER(@UserName), @IsUserAnonymous, @LastActivityDate)

RETURN 0

END

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_Users_CreateUser'

GO

/*************************************************************/

/*************************************************************/

--- DeleteUser SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_DeleteUser')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_Users_DeleteUser

GO

CREATE PROCEDURE [dbo].aspnet_Users_DeleteUser

    @ApplicationName  nvarchar(256),

    @UserName         nvarchar(256),

    @TablesToDeleteFrom int,

    @NumTablesDeletedFrom int OUTPUT

AS

BEGIN

    DECLARE @UserId               uniqueidentifier

    SELECT  @UserId               = NULL

    SELECT  @NumTablesDeletedFrom = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

 SET @TranStarted = 0

DECLARE @ErrorCode   int

    DECLARE @RowCount    int

SET @ErrorCode = 0

    SET @RowCount  = 0

SELECT  @UserId = u.UserId

    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a

    WHERE   u.LoweredUserName       = LOWER(@UserName)

        AND u.ApplicationId         = a.ApplicationId

        AND LOWER(@ApplicationName) = a.LoweredApplicationName

IF (@UserId IS NULL)

    BEGIN

        GOTO Cleanup

    END

-- Delete from Membership table if (@TablesToDeleteFrom & 1) is set

    IF ((@TablesToDeleteFrom & 1) <> 0 AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_MembershipUsers') AND (type = 'V'))))

    BEGIN

        DELETE FROM dbo.aspnet_Membership WHERE @UserId = UserId

SELECT @ErrorCode = @@ERROR,

               @RowCount = @@ROWCOUNT

IF( @ErrorCode <> 0 )

            GOTO Cleanup

IF (@RowCount <> 0)

            SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1

    END

-- Delete from aspnet_UsersInRoles table if (@TablesToDeleteFrom & 2) is set

    IF ((@TablesToDeleteFrom & 2) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_UsersInRoles') AND (type = 'V'))) )

    BEGIN

        DELETE FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId

SELECT @ErrorCode = @@ERROR,

                @RowCount = @@ROWCOUNT

IF( @ErrorCode <> 0 )

            GOTO Cleanup

IF (@RowCount <> 0)

            SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1

    END

-- Delete from aspnet_Profile table if (@TablesToDeleteFrom & 4) is set

    IF ((@TablesToDeleteFrom & 4) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_Profiles') AND (type = 'V'))) )

    BEGIN

        DELETE FROM dbo.aspnet_Profile WHERE @UserId = UserId

SELECT @ErrorCode = @@ERROR,

                @RowCount = @@ROWCOUNT

IF( @ErrorCode <> 0 )

            GOTO Cleanup

IF (@RowCount <> 0)

            SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1

    END

-- Delete from aspnet_PersonalizationPerUser table if (@TablesToDeleteFrom & 8) is set

    IF ((@TablesToDeleteFrom & 8) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_WebPartState_User') AND (type = 'V'))) )

    BEGIN

        DELETE FROM dbo.aspnet_PersonalizationPerUser WHERE @UserId = UserId

SELECT @ErrorCode = @@ERROR,

                @RowCount = @@ROWCOUNT

IF( @ErrorCode <> 0 )

            GOTO Cleanup

IF (@RowCount <> 0)

            SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1

    END

-- Delete from aspnet_Users table if (@TablesToDeleteFrom & 1,2,4 & 8) are all set

    IF ((@TablesToDeleteFrom & 1) <> 0 AND

        (@TablesToDeleteFrom & 2) <> 0 AND

        (@TablesToDeleteFrom & 4) <> 0 AND

        (@TablesToDeleteFrom & 8) <> 0 AND

        (EXISTS (SELECT UserId FROM dbo.aspnet_Users WHERE @UserId = UserId)))

    BEGIN

        DELETE FROM dbo.aspnet_Users WHERE @UserId = UserId

SELECT @ErrorCode = @@ERROR,

                @RowCount = @@ROWCOUNT

IF( @ErrorCode <> 0 )

            GOTO Cleanup

IF (@RowCount <> 0)

            SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1

    END

IF( @TranStarted = 1 )

    BEGIN

     SET @TranStarted = 0

     COMMIT TRANSACTION

    END

RETURN 0

Cleanup:

    SET @NumTablesDeletedFrom = 0

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_Users_DeleteUser'

GO

/*************************************************************/

/*************************************************************/

--- aspnet_AnyDataInTables SP

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_AnyDataInTables')

               AND (type = 'P')))

DROP PROCEDURE [dbo].aspnet_AnyDataInTables

GO

CREATE PROCEDURE [dbo].aspnet_AnyDataInTables

    @TablesToCheck int

AS

BEGIN

    -- Check Membership table if (@TablesToCheck & 1) is set

    IF ((@TablesToCheck & 1) <> 0 AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_MembershipUsers') AND (type = 'V'))))

    BEGIN

        IF (EXISTS(SELECT TOP 1 UserId FROM dbo.aspnet_Membership))

        BEGIN

            SELECT N'aspnet_Membership'

            RETURN

        END

    END

-- Check aspnet_Roles table if (@TablesToCheck & 2) is set

    IF ((@TablesToCheck & 2) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_Roles') AND (type = 'V'))) )

    BEGIN

        IF (EXISTS(SELECT TOP 1 RoleId FROM dbo.aspnet_Roles))

        BEGIN

            SELECT N'aspnet_Roles'

            RETURN

        END

    END

-- Check aspnet_Profile table if (@TablesToCheck & 4) is set

    IF ((@TablesToCheck & 4) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_Profiles') AND (type = 'V'))) )

    BEGIN

        IF (EXISTS(SELECT TOP 1 UserId FROM dbo.aspnet_Profile))

        BEGIN

            SELECT N'aspnet_Profile'

            RETURN

        END

    END

-- Check aspnet_PersonalizationPerUser table if (@TablesToCheck & 8) is set

    IF ((@TablesToCheck & 8) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_WebPartState_User') AND (type = 'V'))) )

    BEGIN

        IF (EXISTS(SELECT TOP 1 UserId FROM dbo.aspnet_PersonalizationPerUser))

        BEGIN

            SELECT N'aspnet_PersonalizationPerUser'

            RETURN

        END

    END

-- Check aspnet_PersonalizationPerUser table if (@TablesToCheck & 16) is set

    IF ((@TablesToCheck & 16) <> 0  AND

        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'aspnet_WebEvent_LogEvent') AND (type = 'P'))) )

    BEGIN

        IF (EXISTS(SELECT TOP 1 * FROM dbo.aspnet_WebEvent_Events))

        BEGIN

            SELECT N'aspnet_WebEvent_Events'

            RETURN

        END

    END

-- Check aspnet_Users table if (@TablesToCheck & 1,2,4 & 8) are all set

    IF ((@TablesToCheck & 1) <> 0 AND

        (@TablesToCheck & 2) <> 0 AND

        (@TablesToCheck & 4) <> 0 AND

        (@TablesToCheck & 8) <> 0 AND

        (@TablesToCheck & 32) <> 0 AND

        (@TablesToCheck & 128) <> 0 AND

        (@TablesToCheck & 256) <> 0 AND

        (@TablesToCheck & 512) <> 0 AND

        (@TablesToCheck & 1024) <> 0)

    BEGIN

        IF (EXISTS(SELECT TOP 1 UserId FROM dbo.aspnet_Users))

        BEGIN

            SELECT N'aspnet_Users'

            RETURN

        END

        IF (EXISTS(SELECT TOP 1 ApplicationId FROM dbo.aspnet_Applications))

        BEGIN

            SELECT N'aspnet_Applications'

            RETURN

        END

    END

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @command nvarchar(400)

SET @command = 'GRANT EXECUTE ON [dbo].aspnet_AnyDataInTables TO ' + QUOTENAME(user)

EXEC (@command)

GO

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'aspnet_AnyDataInTables'

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'vw_aspnet_Applications')

                  AND (type = 'V')))

BEGIN

  PRINT 'Creating the vw_aspnet_Applications view...'

  EXEC('

  CREATE VIEW [dbo].[vw_aspnet_Applications]

  AS SELECT [dbo].[aspnet_Applications].[ApplicationName], [dbo].[aspnet_Applications].[LoweredApplicationName], [dbo].[aspnet_Applications].[ApplicationId], [dbo].[aspnet_Applications].[Description]

  FROM [dbo].[aspnet_Applications]

  ')

END

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'vw_aspnet_Applications'

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'vw_aspnet_Users')

                  AND (type = 'V')))

BEGIN

  PRINT 'Creating the vw_aspnet_Users view...'

  EXEC('

  CREATE VIEW [dbo].[vw_aspnet_Users]

  AS SELECT [dbo].[aspnet_Users].[ApplicationId], [dbo].[aspnet_Users].[UserId], [dbo].[aspnet_Users].[UserName], [dbo].[aspnet_Users].[LoweredUserName], [dbo].[aspnet_Users].[MobileAlias], [dbo].[aspnet_Users].[IsAnonymous], [dbo].[aspnet_Users].[LastActivityDate]

  FROM [dbo].[aspnet_Users]

  ')

END

-- Restore the permissions

EXEC [dbo].aspnet_Setup_RestorePermissions N'vw_aspnet_Users'

GO

/*************************************************************/

/*************************************************************/

DECLARE @command nvarchar(4000)

SET @command = 'REVOKE EXECUTE ON [dbo].aspnet_Setup_RestorePermissions from ' + QUOTENAME(user)

EXEC (@command)

SET @command = 'REVOKE EXECUTE ON [dbo].aspnet_RegisterSchemaVersion from ' + QUOTENAME(user)

EXEC (@command)

GO

DROP TABLE #aspnet_Permissions

GO

PRINT '----------------------------------------'

PRINT 'Completed execution of InstallCommon.SQL'

PRINT '----------------------------------------'

/**********************************************************************/

/* InstallMembership.SQL                                              */

/*                                                                    */

/* Installs the tables, triggers and stored procedures necessary for  */

/* supporting the aspnet feature of ASP.Net                           */

/*                                                                    */

/* InstallCommon.sql must be run before running this file.            */

/*

** Copyright Microsoft, Inc. 2002

** All Rights Reserved.

*/

/**********************************************************************/

PRINT '-------------------------------------------'

PRINT 'Starting execution of InstallMembership.SQL'

PRINT '-------------------------------------------'

GO

SET QUOTED_IDENTIFIER OFF

SET ANSI_NULLS ON         -- We don't want (NULL = NULL) == TRUE

GO

SET ANSI_PADDING ON

GO

SET ANSI_NULL_DFLT_ON ON

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @dbname nvarchar(128)

SET @dbname = N'aspnetdb'

IF (NOT EXISTS (SELECT name

                FROM master.dbo.sysdatabases

                WHERE ('[' + name + ']' = @dbname OR name = @dbname)))

BEGIN

  RAISERROR('The database ''%s'' cannot be found. Please run InstallCommon.sql first.', 18, 1, @dbname)

END

GO

USE [aspnetdb]

GO

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Applications')

                  AND (type = 'U')))

BEGIN

  RAISERROR('The table ''aspnet_Applications'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Users')

                  AND (type = 'U')))

BEGIN

  RAISERROR('The table ''aspnet_Users'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Applications_CreateApplication')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Applications_CreateApplication'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_CreateUser')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Users_CreateUser'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_DeleteUser')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Users_DeleteUser'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Membership')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_Membership table...'

  CREATE TABLE dbo.aspnet_Membership (

        ApplicationId                           uniqueidentifier    NOT NULL FOREIGN KEY REFERENCES dbo.aspnet_Applications(ApplicationId),

        UserId                                  uniqueidentifier    NOT NULL PRIMARY KEY NONCLUSTERED FOREIGN KEY REFERENCES dbo.aspnet_Users(UserId),

        Password                                nvarchar(128)       NOT NULL,

        PasswordFormat                          int                 NOT NULL DEFAULT 0,

        PasswordSalt                            nvarchar(128)       NOT NULL,

        MobilePIN                               nvarchar(16),

        Email                                   nvarchar(256),

        LoweredEmail                            nvarchar(256),

        PasswordQuestion                        nvarchar(256),

        PasswordAnswer                          nvarchar(128),

        IsApproved                              bit                 NOT NULL,

        IsLockedOut                             bit                 NOT NULL,

        CreateDate                              datetime            NOT NULL,

        LastLoginDate                           datetime            NOT NULL,

        LastPasswordChangedDate                 datetime            NOT NULL,

        LastLockoutDate                         datetime            NOT NULL,

        FailedPasswordAttemptCount              int                 NOT NULL,

        FailedPasswordAttemptWindowStart        datetime            NOT NULL,

        FailedPasswordAnswerAttemptCount        int                 NOT NULL,

        FailedPasswordAnswerAttemptWindowStart  datetime            NOT NULL,

        Comment                                 ntext )

  CREATE CLUSTERED INDEX aspnet_Membership_index ON aspnet_Membership(ApplicationId, LoweredEmail)

END

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @ver int

DECLARE @version nchar(100)

DECLARE @dot int

DECLARE @hyphen int

DECLARE @SqlToExec nchar(400)

SELECT @ver = 8

SELECT @version = @@Version

SELECT @hyphen  = CHARINDEX(N' - ', @version)

IF (NOT(@hyphen IS NULL) AND @hyphen > 0)

BEGIN

    SELECT @hyphen = @hyphen + 3

    SELECT @dot    = CHARINDEX(N'.', @version, @hyphen)

    IF (NOT(@dot IS NULL) AND @dot > @hyphen)

    BEGIN

        SELECT @version = SUBSTRING(@version, @hyphen, @dot - @hyphen)

        SELECT @ver     = CONVERT(int, @version)

    END

END

/*************************************************************/

IF (@ver >= 8)

    EXEC sp_tableoption N'aspnet_Membership', 'text in row', 3000

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_CreateUser')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_CreateUser

GO

CREATE PROCEDURE dbo.aspnet_Membership_CreateUser

    @ApplicationName                        nvarchar(256),

    @UserName                               nvarchar(256),

    @Password                               nvarchar(128),

    @PasswordSalt                           nvarchar(128),

    @Email                                  nvarchar(256),

    @PasswordQuestion                       nvarchar(256),

    @PasswordAnswer                         nvarchar(128),

    @IsApproved                             bit,

    @CurrentTimeUtc                         datetime,

    @CreateDate                             datetime = NULL,

    @UniqueEmail                            int      = 0,

    @PasswordFormat                         int      = 0,

    @UserId                                 uniqueidentifier OUTPUT

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

DECLARE @NewUserId uniqueidentifier

    SELECT @NewUserId = NULL

DECLARE @IsLockedOut bit

    SET @IsLockedOut = 0

DECLARE @LastLockoutDate  datetime

    SET @LastLockoutDate = CONVERT( datetime, '17540101', 112 )

DECLARE @FailedPasswordAttemptCount int

    SET @FailedPasswordAttemptCount = 0

DECLARE @FailedPasswordAttemptWindowStart  datetime

    SET @FailedPasswordAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

DECLARE @FailedPasswordAnswerAttemptCount int

    SET @FailedPasswordAnswerAttemptCount = 0

DECLARE @FailedPasswordAnswerAttemptWindowStart  datetime

    SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

DECLARE @NewUserCreated bit

    DECLARE @ReturnValue   int

    SET @ReturnValue = 0

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

     SET @TranStarted = 0

EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName, @ApplicationId OUTPUT

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

SET @CreateDate = @CurrentTimeUtc

SELECT  @NewUserId = UserId FROM dbo.aspnet_Users WHERE LOWER(@UserName) = LoweredUserName AND @ApplicationId = ApplicationId

    IF ( @NewUserId IS NULL )

    BEGIN

        SET @NewUserId = @UserId

        EXEC @ReturnValue = dbo.aspnet_Users_CreateUser @ApplicationId, @UserName, 0, @CreateDate, @NewUserId OUTPUT

        SET @NewUserCreated = 1

    END

    ELSE

    BEGIN

        SET @NewUserCreated = 0

        IF( @NewUserId <> @UserId AND @UserId IS NOT NULL )

        BEGIN

            SET @ErrorCode = 6

            GOTO Cleanup

        END

    END

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF( @ReturnValue = -1 )

    BEGIN

        SET @ErrorCode = 10

        GOTO Cleanup

    END

IF ( EXISTS ( SELECT UserId

                  FROM   dbo.aspnet_Membership

                  WHERE  @NewUserId = UserId ) )

    BEGIN

        SET @ErrorCode = 6

        GOTO Cleanup

    END

SET @UserId = @NewUserId

IF (@UniqueEmail = 1)

    BEGIN

        IF (EXISTS (SELECT *

                    FROM  dbo.aspnet_Membership m WITH ( UPDLOCK, HOLDLOCK )

                    WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email)))

        BEGIN

            SET @ErrorCode = 7

            GOTO Cleanup

        END

    END

IF (@NewUserCreated = 0)

    BEGIN

        UPDATE dbo.aspnet_Users

        SET    LastActivityDate = @CreateDate

        WHERE  @UserId = UserId

        IF( @@ERROR <> 0 )

        BEGIN

            SET @ErrorCode = -1

            GOTO Cleanup

        END

    END

INSERT INTO dbo.aspnet_Membership

                ( ApplicationId,

                  UserId,

                  Password,

                  PasswordSalt,

                  Email,

                  LoweredEmail,

                  PasswordQuestion,

                  PasswordAnswer,

                  PasswordFormat,

                  IsApproved,

                  IsLockedOut,

                  CreateDate,

                  LastLoginDate,

                  LastPasswordChangedDate,

                  LastLockoutDate,

                  FailedPasswordAttemptCount,

                  FailedPasswordAttemptWindowStart,

                  FailedPasswordAnswerAttemptCount,

                  FailedPasswordAnswerAttemptWindowStart )

         VALUES ( @ApplicationId,

                  @UserId,

                  @Password,

                  @PasswordSalt,

                  @Email,

                  LOWER(@Email),

                  @PasswordQuestion,

                  @PasswordAnswer,

                  @PasswordFormat,

                  @IsApproved,

                  @IsLockedOut,

                  @CreateDate,

                  @CreateDate,

                  @CreateDate,

                  @LastLockoutDate,

                  @FailedPasswordAttemptCount,

                  @FailedPasswordAttemptWindowStart,

                  @FailedPasswordAnswerAttemptCount,

                  @FailedPasswordAnswerAttemptWindowStart )

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF( @TranStarted = 1 )

    BEGIN

     SET @TranStarted = 0

     COMMIT TRANSACTION

    END

RETURN 0

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetUserByName')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetUserByName

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetUserByName

    @ApplicationName      nvarchar(256),

    @UserName             nvarchar(256),

    @CurrentTimeUtc       datetime,

    @UpdateLastActivity   bit = 0

AS

BEGIN

    DECLARE @UserId uniqueidentifier

IF (@UpdateLastActivity = 1)

    BEGIN

        SELECT TOP 1 m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

                m.CreateDate, m.LastLoginDate, @CurrentTimeUtc, m.LastPasswordChangedDate,

                u.UserId, m.IsLockedOut,m.LastLockoutDate

        FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m

        WHERE    LOWER(@ApplicationName) = a.LoweredApplicationName AND

                u.ApplicationId = a.ApplicationId    AND

                LOWER(@UserName) = u.LoweredUserName AND u.UserId = m.UserId

IF (@@ROWCOUNT = 0) -- Username not found

            RETURN -1

UPDATE   dbo.aspnet_Users

        SET      LastActivityDate = @CurrentTimeUtc

        WHERE    @UserId = UserId

    END

    ELSE

    BEGIN

        SELECT TOP 1 m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

                m.CreateDate, m.LastLoginDate, u.LastActivityDate, m.LastPasswordChangedDate,

                u.UserId, m.IsLockedOut,m.LastLockoutDate

        FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m

        WHERE    LOWER(@ApplicationName) = a.LoweredApplicationName AND

                u.ApplicationId = a.ApplicationId    AND

                LOWER(@UserName) = u.LoweredUserName AND u.UserId = m.UserId

IF (@@ROWCOUNT = 0) -- Username not found

            RETURN -1

    END

RETURN 0

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetUserByUserId')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetUserByUserId

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetUserByUserId

    @UserId               uniqueidentifier,

    @CurrentTimeUtc       datetime,

    @UpdateLastActivity   bit = 0

AS

BEGIN

    IF ( @UpdateLastActivity = 1 )

    BEGIN

        UPDATE   dbo.aspnet_Users

        SET      LastActivityDate = @CurrentTimeUtc

        FROM     dbo.aspnet_Users

        WHERE    @UserId = UserId

IF ( @@ROWCOUNT = 0 ) -- User ID not found

            RETURN -1

    END

SELECT  m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

            m.CreateDate, m.LastLoginDate, u.LastActivityDate,

            m.LastPasswordChangedDate, u.UserName, m.IsLockedOut,

            m.LastLockoutDate

    FROM    dbo.aspnet_Users u, dbo.aspnet_Membership m

    WHERE   @UserId = u.UserId AND u.UserId = m.UserId

IF ( @@ROWCOUNT = 0 ) -- User ID not found

       RETURN -1

RETURN 0

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetUserByEmail')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetUserByEmail

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetUserByEmail

    @ApplicationName  nvarchar(256),

    @Email            nvarchar(256)

AS

BEGIN

    IF( @Email IS NULL )

        SELECT  u.UserName

        FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m

        WHERE   LOWER(@ApplicationName) = a.LoweredApplicationName AND

                u.ApplicationId = a.ApplicationId    AND

                u.UserId = m.UserId AND

                m.LoweredEmail IS NULL

    ELSE

        SELECT  u.UserName

        FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m

        WHERE   LOWER(@ApplicationName) = a.LoweredApplicationName AND

                u.ApplicationId = a.ApplicationId    AND

                u.UserId = m.UserId AND

                LOWER(@Email) = m.LoweredEmail

IF (@@rowcount = 0)

        RETURN(1)

    RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF ( EXISTS( SELECT name

             FROM sysobjects

             WHERE ( name = N'aspnet_Membership_GetPasswordWithFormat' )

                   AND ( type = 'P' ) ) )

DROP PROCEDURE dbo.aspnet_Membership_GetPasswordWithFormat

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetPasswordWithFormat

    @ApplicationName                nvarchar(256),

    @UserName                       nvarchar(256),

    @UpdateLastLoginActivityDate    bit,

    @CurrentTimeUtc                 datetime

AS

BEGIN

    DECLARE @IsLockedOut                        bit

    DECLARE @UserId                             uniqueidentifier

    DECLARE @Password                           nvarchar(128)

    DECLARE @PasswordSalt                       nvarchar(128)

    DECLARE @PasswordFormat                     int

    DECLARE @FailedPasswordAttemptCount         int

    DECLARE @FailedPasswordAnswerAttemptCount   int

    DECLARE @IsApproved                         bit

    DECLARE @LastActivityDate                   datetime

    DECLARE @LastLoginDate                      datetime

SELECT  @UserId          = NULL

SELECT  @UserId = u.UserId, @IsLockedOut = m.IsLockedOut, @Password=Password, @PasswordFormat=PasswordFormat,

            @PasswordSalt=PasswordSalt, @FailedPasswordAttemptCount=FailedPasswordAttemptCount,

      @FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount, @IsApproved=IsApproved,

            @LastActivityDate = LastActivityDate, @LastLoginDate = LastLoginDate

    FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m

    WHERE   LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.ApplicationId = a.ApplicationId    AND

            u.UserId = m.UserId AND

            LOWER(@UserName) = u.LoweredUserName

IF (@UserId IS NULL)

        RETURN 1

IF (@IsLockedOut = 1)

        RETURN 99

SELECT   @Password, @PasswordFormat, @PasswordSalt, @FailedPasswordAttemptCount,

             @FailedPasswordAnswerAttemptCount, @IsApproved, @LastLoginDate, @LastActivityDate

IF (@UpdateLastLoginActivityDate = 1 AND @IsApproved = 1)

    BEGIN

        UPDATE  dbo.aspnet_Membership

        SET     LastLoginDate = @CurrentTimeUtc

        WHERE   UserId = @UserId

UPDATE  dbo.aspnet_Users

        SET     LastActivityDate = @CurrentTimeUtc

        WHERE   @UserId = UserId

    END

RETURN 0

END

GO

/*************************************************************/

/*************************************************************/

IF ( EXISTS( SELECT name

             FROM sysobjects

             WHERE ( name = N'aspnet_Membership_UpdateUserInfo' )

                   AND ( type = 'P' ) ) )

DROP PROCEDURE dbo.aspnet_Membership_UpdateUserInfo

GO

CREATE PROCEDURE dbo.aspnet_Membership_UpdateUserInfo

    @ApplicationName                nvarchar(256),

    @UserName                       nvarchar(256),

    @IsPasswordCorrect              bit,

    @UpdateLastLoginActivityDate    bit,

    @MaxInvalidPasswordAttempts     int,

    @PasswordAttemptWindow          int,

    @CurrentTimeUtc                 datetime,

    @LastLoginDate                  datetime,

    @LastActivityDate               datetime

AS

BEGIN

    DECLARE @UserId                                 uniqueidentifier

    DECLARE @IsApproved                             bit

    DECLARE @IsLockedOut                            bit

    DECLARE @LastLockoutDate                        datetime

    DECLARE @FailedPasswordAttemptCount             int

    DECLARE @FailedPasswordAttemptWindowStart       datetime

    DECLARE @FailedPasswordAnswerAttemptCount       int

    DECLARE @FailedPasswordAnswerAttemptWindowStart datetime

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

     SET @TranStarted = 0

SELECT  @UserId = u.UserId,

            @IsApproved = m.IsApproved,

            @IsLockedOut = m.IsLockedOut,

            @LastLockoutDate = m.LastLockoutDate,

            @FailedPasswordAttemptCount = m.FailedPasswordAttemptCount,

            @FailedPasswordAttemptWindowStart = m.FailedPasswordAttemptWindowStart,

            @FailedPasswordAnswerAttemptCount = m.FailedPasswordAnswerAttemptCount,

            @FailedPasswordAnswerAttemptWindowStart = m.FailedPasswordAnswerAttemptWindowStart

    FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m WITH ( UPDLOCK )

    WHERE   LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.ApplicationId = a.ApplicationId    AND

            u.UserId = m.UserId AND

            LOWER(@UserName) = u.LoweredUserName

IF ( @@rowcount = 0 )

    BEGIN

        SET @ErrorCode = 1

        GOTO Cleanup

    END

IF( @IsLockedOut = 1 )

    BEGIN

        GOTO Cleanup

    END

IF( @IsPasswordCorrect = 0 )

    BEGIN

        IF( @CurrentTimeUtc > DATEADD( minute, @PasswordAttemptWindow, @FailedPasswordAttemptWindowStart ) )

        BEGIN

            SET @FailedPasswordAttemptWindowStart = @CurrentTimeUtc

            SET @FailedPasswordAttemptCount = 1

        END

        ELSE

        BEGIN

            SET @FailedPasswordAttemptWindowStart = @CurrentTimeUtc

            SET @FailedPasswordAttemptCount = @FailedPasswordAttemptCount + 1

        END

BEGIN

            IF( @FailedPasswordAttemptCount >= @MaxInvalidPasswordAttempts )

            BEGIN

                SET @IsLockedOut = 1

                SET @LastLockoutDate = @CurrentTimeUtc

            END

        END

    END

    ELSE

    BEGIN

        IF( @FailedPasswordAttemptCount > 0 OR @FailedPasswordAnswerAttemptCount > 0 )

        BEGIN

            SET @FailedPasswordAttemptCount = 0

            SET @FailedPasswordAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

            SET @FailedPasswordAnswerAttemptCount = 0

            SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

            SET @LastLockoutDate = CONVERT( datetime, '17540101', 112 )

        END

    END

IF( @UpdateLastLoginActivityDate = 1 )

    BEGIN

        UPDATE  dbo.aspnet_Users

        SET     LastActivityDate = @LastActivityDate

        WHERE   @UserId = UserId

IF( @@ERROR <> 0 )

        BEGIN

            SET @ErrorCode = -1

            GOTO Cleanup

        END

UPDATE  dbo.aspnet_Membership

        SET     LastLoginDate = @LastLoginDate

        WHERE   UserId = @UserId

IF( @@ERROR <> 0 )

        BEGIN

            SET @ErrorCode = -1

            GOTO Cleanup

        END

    END

UPDATE dbo.aspnet_Membership

    SET IsLockedOut = @IsLockedOut, LastLockoutDate = @LastLockoutDate,

        FailedPasswordAttemptCount = @FailedPasswordAttemptCount,

        FailedPasswordAttemptWindowStart = @FailedPasswordAttemptWindowStart,

        FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount,

        FailedPasswordAnswerAttemptWindowStart = @FailedPasswordAnswerAttemptWindowStart

    WHERE @UserId = UserId

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF( @TranStarted = 1 )

    BEGIN

 SET @TranStarted = 0

 COMMIT TRANSACTION

    END

RETURN @ErrorCode

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetPassword')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetPassword

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetPassword

    @ApplicationName                nvarchar(256),

    @UserName                       nvarchar(256),

    @MaxInvalidPasswordAttempts     int,

    @PasswordAttemptWindow          int,

    @CurrentTimeUtc                 datetime,

    @PasswordAnswer                 nvarchar(128) = NULL

AS

BEGIN

    DECLARE @UserId                                 uniqueidentifier

    DECLARE @PasswordFormat                         int

    DECLARE @Password                               nvarchar(128)

    DECLARE @passAns                                nvarchar(128)

    DECLARE @IsLockedOut                            bit

    DECLARE @LastLockoutDate                        datetime

    DECLARE @FailedPasswordAttemptCount             int

    DECLARE @FailedPasswordAttemptWindowStart       datetime

    DECLARE @FailedPasswordAnswerAttemptCount       int

    DECLARE @FailedPasswordAnswerAttemptWindowStart datetime

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

     SET @TranStarted = 0

SELECT  @UserId = u.UserId,

            @Password = m.Password,

            @passAns = m.PasswordAnswer,

            @PasswordFormat = m.PasswordFormat,

            @IsLockedOut = m.IsLockedOut,

            @LastLockoutDate = m.LastLockoutDate,

            @FailedPasswordAttemptCount = m.FailedPasswordAttemptCount,

            @FailedPasswordAttemptWindowStart = m.FailedPasswordAttemptWindowStart,

            @FailedPasswordAnswerAttemptCount = m.FailedPasswordAnswerAttemptCount,

            @FailedPasswordAnswerAttemptWindowStart = m.FailedPasswordAnswerAttemptWindowStart

    FROM    dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m WITH ( UPDLOCK )

    WHERE   LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.ApplicationId = a.ApplicationId    AND

            u.UserId = m.UserId AND

            LOWER(@UserName) = u.LoweredUserName

IF ( @@rowcount = 0 )

    BEGIN

        SET @ErrorCode = 1

        GOTO Cleanup

    END

IF( @IsLockedOut = 1 )

    BEGIN

        SET @ErrorCode = 99

        GOTO Cleanup

    END

IF ( NOT( @PasswordAnswer IS NULL ) )

    BEGIN

        IF( ( @passAns IS NULL ) OR ( LOWER( @passAns ) <> LOWER( @PasswordAnswer ) ) )

        BEGIN

            IF( @CurrentTimeUtc > DATEADD( minute, @PasswordAttemptWindow, @FailedPasswordAnswerAttemptWindowStart ) )

            BEGIN

                SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc

                SET @FailedPasswordAnswerAttemptCount = 1

            END

            ELSE

            BEGIN

                SET @FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount + 1

                SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc

            END

BEGIN

                IF( @FailedPasswordAnswerAttemptCount >= @MaxInvalidPasswordAttempts )

                BEGIN

                    SET @IsLockedOut = 1

                    SET @LastLockoutDate = @CurrentTimeUtc

                END

            END

SET @ErrorCode = 3

        END

        ELSE

        BEGIN

            IF( @FailedPasswordAnswerAttemptCount > 0 )

            BEGIN

                SET @FailedPasswordAnswerAttemptCount = 0

                SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

            END

        END

UPDATE dbo.aspnet_Membership

        SET IsLockedOut = @IsLockedOut, LastLockoutDate = @LastLockoutDate,

            FailedPasswordAttemptCount = @FailedPasswordAttemptCount,

            FailedPasswordAttemptWindowStart = @FailedPasswordAttemptWindowStart,

            FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount,

            FailedPasswordAnswerAttemptWindowStart = @FailedPasswordAnswerAttemptWindowStart

        WHERE @UserId = UserId

IF( @@ERROR <> 0 )

        BEGIN

            SET @ErrorCode = -1

            GOTO Cleanup

        END

    END

IF( @TranStarted = 1 )

    BEGIN

 SET @TranStarted = 0

 COMMIT TRANSACTION

    END

IF( @ErrorCode = 0 )

        SELECT @Password, @PasswordFormat

RETURN @ErrorCode

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_SetPassword')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_SetPassword

GO

CREATE PROCEDURE dbo.aspnet_Membership_SetPassword

    @ApplicationName  nvarchar(256),

    @UserName         nvarchar(256),

    @NewPassword      nvarchar(128),

    @PasswordSalt     nvarchar(128),

    @CurrentTimeUtc   datetime,

    @PasswordFormat   int = 0

AS

BEGIN

    DECLARE @UserId uniqueidentifier

    SELECT  @UserId = NULL

    SELECT  @UserId = u.UserId

    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m

    WHERE   LoweredUserName = LOWER(@UserName) AND

            u.ApplicationId = a.ApplicationId  AND

            LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.UserId = m.UserId

IF (@UserId IS NULL)

        RETURN(1)

UPDATE dbo.aspnet_Membership

    SET Password = @NewPassword, PasswordFormat = @PasswordFormat, PasswordSalt = @PasswordSalt,

        LastPasswordChangedDate = @CurrentTimeUtc

    WHERE @UserId = UserId

    RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_ResetPassword')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_ResetPassword

GO

CREATE PROCEDURE dbo.aspnet_Membership_ResetPassword

    @ApplicationName             nvarchar(256),

    @UserName                    nvarchar(256),

    @NewPassword                 nvarchar(128),

    @MaxInvalidPasswordAttempts  int,

    @PasswordAttemptWindow       int,

    @PasswordSalt                nvarchar(128),

    @CurrentTimeUtc              datetime,

    @PasswordFormat              int = 0,

    @PasswordAnswer              nvarchar(128) = NULL

AS

BEGIN

    DECLARE @IsLockedOut                            bit

    DECLARE @LastLockoutDate                        datetime

    DECLARE @FailedPasswordAttemptCount             int

    DECLARE @FailedPasswordAttemptWindowStart       datetime

    DECLARE @FailedPasswordAnswerAttemptCount       int

    DECLARE @FailedPasswordAnswerAttemptWindowStart datetime

DECLARE @UserId                                 uniqueidentifier

    SET     @UserId = NULL

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

     SET @TranStarted = 0

SELECT  @UserId = u.UserId

    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m

    WHERE   LoweredUserName = LOWER(@UserName) AND

            u.ApplicationId = a.ApplicationId  AND

            LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.UserId = m.UserId

IF ( @UserId IS NULL )

    BEGIN

        SET @ErrorCode = 1

        GOTO Cleanup

    END

SELECT @IsLockedOut = IsLockedOut,

           @LastLockoutDate = LastLockoutDate,

           @FailedPasswordAttemptCount = FailedPasswordAttemptCount,

           @FailedPasswordAttemptWindowStart = FailedPasswordAttemptWindowStart,

           @FailedPasswordAnswerAttemptCount = FailedPasswordAnswerAttemptCount,

           @FailedPasswordAnswerAttemptWindowStart = FailedPasswordAnswerAttemptWindowStart

    FROM dbo.aspnet_Membership WITH ( UPDLOCK )

    WHERE @UserId = UserId

IF( @IsLockedOut = 1 )

    BEGIN

        SET @ErrorCode = 99

        GOTO Cleanup

    END

UPDATE dbo.aspnet_Membership

    SET    Password = @NewPassword,

           LastPasswordChangedDate = @CurrentTimeUtc,

           PasswordFormat = @PasswordFormat,

           PasswordSalt = @PasswordSalt

    WHERE  @UserId = UserId AND

           ( ( @PasswordAnswer IS NULL ) OR ( LOWER( PasswordAnswer ) = LOWER( @PasswordAnswer ) ) )

IF ( @@ROWCOUNT = 0 )

        BEGIN

            IF( @CurrentTimeUtc > DATEADD( minute, @PasswordAttemptWindow, @FailedPasswordAnswerAttemptWindowStart ) )

            BEGIN

                SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc

                SET @FailedPasswordAnswerAttemptCount = 1

            END

            ELSE

            BEGIN

                SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc

                SET @FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount + 1

            END

BEGIN

                IF( @FailedPasswordAnswerAttemptCount >= @MaxInvalidPasswordAttempts )

                BEGIN

                    SET @IsLockedOut = 1

                    SET @LastLockoutDate = @CurrentTimeUtc

                END

            END

SET @ErrorCode = 3

        END

    ELSE

        BEGIN

            IF( @FailedPasswordAnswerAttemptCount > 0 )

            BEGIN

                SET @FailedPasswordAnswerAttemptCount = 0

                SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 )

            END

        END

IF( NOT ( @PasswordAnswer IS NULL ) )

    BEGIN

        UPDATE dbo.aspnet_Membership

        SET IsLockedOut = @IsLockedOut, LastLockoutDate = @LastLockoutDate,

            FailedPasswordAttemptCount = @FailedPasswordAttemptCount,

            FailedPasswordAttemptWindowStart = @FailedPasswordAttemptWindowStart,

            FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount,

            FailedPasswordAnswerAttemptWindowStart = @FailedPasswordAnswerAttemptWindowStart

        WHERE @UserId = UserId

IF( @@ERROR <> 0 )

        BEGIN

            SET @ErrorCode = -1

            GOTO Cleanup

        END

    END

IF( @TranStarted = 1 )

    BEGIN

 SET @TranStarted = 0

 COMMIT TRANSACTION

    END

RETURN @ErrorCode

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_UnlockUser')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_UnlockUser

GO

CREATE PROCEDURE dbo.aspnet_Membership_UnlockUser

    @ApplicationName                         nvarchar(256),

    @UserName                                nvarchar(256)

AS

BEGIN

    DECLARE @UserId uniqueidentifier

    SELECT  @UserId = NULL

    SELECT  @UserId = u.UserId

    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m

    WHERE   LoweredUserName = LOWER(@UserName) AND

            u.ApplicationId = a.ApplicationId  AND

            LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.UserId = m.UserId

IF ( @UserId IS NULL )

        RETURN 1

UPDATE dbo.aspnet_Membership

    SET IsLockedOut = 0,

        FailedPasswordAttemptCount = 0,

        FailedPasswordAttemptWindowStart = CONVERT( datetime, '17540101', 112 ),

        FailedPasswordAnswerAttemptCount = 0,

        FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 ),

        LastLockoutDate = CONVERT( datetime, '17540101', 112 )

    WHERE @UserId = UserId

RETURN 0

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_UpdateUser')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_UpdateUser

GO

CREATE PROCEDURE dbo.aspnet_Membership_UpdateUser

    @ApplicationName      nvarchar(256),

    @UserName             nvarchar(256),

    @Email                nvarchar(256),

    @Comment              ntext,

    @IsApproved           bit,

    @LastLoginDate        datetime,

    @LastActivityDate     datetime,

    @UniqueEmail          int,

    @CurrentTimeUtc       datetime

AS

BEGIN

    DECLARE @UserId uniqueidentifier

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @UserId = NULL

    SELECT  @UserId = u.UserId, @ApplicationId = a.ApplicationId

    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m

    WHERE   LoweredUserName = LOWER(@UserName) AND

            u.ApplicationId = a.ApplicationId  AND

            LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.UserId = m.UserId

IF (@UserId IS NULL)

        RETURN(1)

IF (@UniqueEmail = 1)

    BEGIN

        IF (EXISTS (SELECT *

                    FROM  dbo.aspnet_Membership WITH (UPDLOCK, HOLDLOCK)

                    WHERE ApplicationId = @ApplicationId  AND @UserId <> UserId AND LoweredEmail = LOWER(@Email)))

        BEGIN

            RETURN(7)

        END

    END

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

     BEGIN TRANSACTION

     SET @TranStarted = 1

    END

    ELSE

 SET @TranStarted = 0

UPDATE dbo.aspnet_Users WITH (ROWLOCK)

    SET

         LastActivityDate = @LastActivityDate

    WHERE

       @UserId = UserId

IF( @@ERROR <> 0 )

        GOTO Cleanup

UPDATE dbo.aspnet_Membership WITH (ROWLOCK)

    SET

         Email            = @Email,

         LoweredEmail     = LOWER(@Email),

         Comment          = @Comment,

         IsApproved       = @IsApproved,

         LastLoginDate    = @LastLoginDate

    WHERE

       @UserId = UserId

IF( @@ERROR <> 0 )

        GOTO Cleanup

IF( @TranStarted = 1 )

    BEGIN

 SET @TranStarted = 0

 COMMIT TRANSACTION

    END

RETURN 0

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

     ROLLBACK TRANSACTION

    END

RETURN -1

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_ChangePasswordQuestionAndAnswer')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_ChangePasswordQuestionAndAnswer

GO

CREATE PROCEDURE dbo.aspnet_Membership_ChangePasswordQuestionAndAnswer

    @ApplicationName       nvarchar(256),

    @UserName              nvarchar(256),

    @NewPasswordQuestion   nvarchar(256),

    @NewPasswordAnswer     nvarchar(128)

AS

BEGIN

    DECLARE @UserId uniqueidentifier

    SELECT  @UserId = NULL

    SELECT  @UserId = u.UserId

    FROM    dbo.aspnet_Membership m, dbo.aspnet_Users u, dbo.aspnet_Applications a

    WHERE   LoweredUserName = LOWER(@UserName) AND

            u.ApplicationId = a.ApplicationId  AND

            LOWER(@ApplicationName) = a.LoweredApplicationName AND

            u.UserId = m.UserId

    IF (@UserId IS NULL)

    BEGIN

        RETURN(1)

    END

UPDATE dbo.aspnet_Membership

    SET    PasswordQuestion = @NewPasswordQuestion, PasswordAnswer = @NewPasswordAnswer

    WHERE  UserId=@UserId

    RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetAllUsers')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetAllUsers

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetAllUsers

    @ApplicationName       nvarchar(256),

    @PageIndex             int,

    @PageSize              int

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN 0

-- Set the page bounds

    DECLARE @PageLowerBound int

    DECLARE @PageUpperBound int

    DECLARE @TotalRecords   int

    SET @PageLowerBound = @PageSize * @PageIndex

    SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

-- Create a temp table TO store the select results

    CREATE TABLE #PageIndexForUsers

    (

        IndexId int IDENTITY (0, 1) NOT NULL,

        UserId uniqueidentifier

    )

-- Insert into our temp table

    INSERT INTO #PageIndexForUsers (UserId)

    SELECT u.UserId

    FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u

    WHERE  u.ApplicationId = @ApplicationId AND u.UserId = m.UserId

    ORDER BY u.UserName

SELECT @TotalRecords = @@ROWCOUNT

SELECT u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

            m.CreateDate,

            m.LastLoginDate,

            u.LastActivityDate,

            m.LastPasswordChangedDate,

            u.UserId, m.IsLockedOut,

            m.LastLockoutDate

    FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p

    WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND

           p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound

    ORDER BY u.UserName

    RETURN @TotalRecords

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_GetNumberOfUsersOnline')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_GetNumberOfUsersOnline

GO

CREATE PROCEDURE dbo.aspnet_Membership_GetNumberOfUsersOnline

    @ApplicationName            nvarchar(256),

    @MinutesSinceLastInActive   int,

    @CurrentTimeUtc             datetime

AS

BEGIN

    DECLARE @DateActive datetime

    SELECT  @DateActive = DATEADD(minute,  -(@MinutesSinceLastInActive), @CurrentTimeUtc)

DECLARE @NumOnline int

    SELECT  @NumOnline = COUNT(*)

    FROM    dbo.aspnet_Users u(NOLOCK),

            dbo.aspnet_Applications a(NOLOCK),

            dbo.aspnet_Membership m(NOLOCK)

    WHERE   u.ApplicationId = a.ApplicationId                  AND

            LastActivityDate > @DateActive                     AND

            a.LoweredApplicationName = LOWER(@ApplicationName) AND

            u.UserId = m.UserId

    RETURN(@NumOnline)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_FindUsersByName')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_FindUsersByName

GO

CREATE PROCEDURE dbo.aspnet_Membership_FindUsersByName

    @ApplicationName       nvarchar(256),

    @UserNameToMatch       nvarchar(256),

    @PageIndex             int,

    @PageSize              int

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN 0

-- Set the page bounds

    DECLARE @PageLowerBound int

    DECLARE @PageUpperBound int

    DECLARE @TotalRecords   int

    SET @PageLowerBound = @PageSize * @PageIndex

    SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

-- Create a temp table TO store the select results

    CREATE TABLE #PageIndexForUsers

    (

        IndexId int IDENTITY (0, 1) NOT NULL,

        UserId uniqueidentifier

    )

-- Insert into our temp table

    INSERT INTO #PageIndexForUsers (UserId)

        SELECT u.UserId

        FROM   dbo.aspnet_Users u, dbo.aspnet_Membership m

        WHERE  u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND u.LoweredUserName LIKE LOWER(@UserNameToMatch)

        ORDER BY u.UserName

SELECT  u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

            m.CreateDate,

            m.LastLoginDate,

            u.LastActivityDate,

            m.LastPasswordChangedDate,

            u.UserId, m.IsLockedOut,

            m.LastLockoutDate

    FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p

    WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND

           p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound

    ORDER BY u.UserName

SELECT  @TotalRecords = COUNT(*)

    FROM    #PageIndexForUsers

    RETURN @TotalRecords

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Membership_FindUsersByEmail')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Membership_FindUsersByEmail

GO

CREATE PROCEDURE dbo.aspnet_Membership_FindUsersByEmail

    @ApplicationName       nvarchar(256),

    @EmailToMatch          nvarchar(256),

    @PageIndex             int,

    @PageSize              int

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN 0

-- Set the page bounds

    DECLARE @PageLowerBound int

    DECLARE @PageUpperBound int

    DECLARE @TotalRecords   int

    SET @PageLowerBound = @PageSize * @PageIndex

    SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

-- Create a temp table TO store the select results

    CREATE TABLE #PageIndexForUsers

    (

        IndexId int IDENTITY (0, 1) NOT NULL,

        UserId uniqueidentifier

    )

-- Insert into our temp table

    IF( @EmailToMatch IS NULL )

        INSERT INTO #PageIndexForUsers (UserId)

            SELECT u.UserId

            FROM   dbo.aspnet_Users u, dbo.aspnet_Membership m

            WHERE  u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND m.Email IS NULL

            ORDER BY m.LoweredEmail

    ELSE

        INSERT INTO #PageIndexForUsers (UserId)

            SELECT u.UserId

            FROM   dbo.aspnet_Users u, dbo.aspnet_Membership m

            WHERE  u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND m.LoweredEmail LIKE LOWER(@EmailToMatch)

            ORDER BY m.LoweredEmail

SELECT  u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,

            m.CreateDate,

            m.LastLoginDate,

            u.LastActivityDate,

            m.LastPasswordChangedDate,

            u.UserId, m.IsLockedOut,

            m.LastLockoutDate

    FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p

    WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND

           p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound

    ORDER BY m.LoweredEmail

SELECT  @TotalRecords = COUNT(*)

    FROM    #PageIndexForUsers

    RETURN @TotalRecords

END

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'vw_aspnet_MembershipUsers')

                  AND (type = 'V')))

BEGIN

  PRINT 'Creating the vw_aspnet_MembershipUsers view...'

  EXEC('

  CREATE VIEW [dbo].[vw_aspnet_MembershipUsers]

  AS SELECT [dbo].[aspnet_Membership].[UserId],

            [dbo].[aspnet_Membership].[PasswordFormat],

            [dbo].[aspnet_Membership].[MobilePIN],

            [dbo].[aspnet_Membership].[Email],

            [dbo].[aspnet_Membership].[LoweredEmail],

            [dbo].[aspnet_Membership].[PasswordQuestion],

            [dbo].[aspnet_Membership].[PasswordAnswer],

            [dbo].[aspnet_Membership].[IsApproved],

            [dbo].[aspnet_Membership].[IsLockedOut],

            [dbo].[aspnet_Membership].[CreateDate],

            [dbo].[aspnet_Membership].[LastLoginDate],

            [dbo].[aspnet_Membership].[LastPasswordChangedDate],

            [dbo].[aspnet_Membership].[LastLockoutDate],

            [dbo].[aspnet_Membership].[FailedPasswordAttemptCount],

            [dbo].[aspnet_Membership].[FailedPasswordAttemptWindowStart],

            [dbo].[aspnet_Membership].[FailedPasswordAnswerAttemptCount],

            [dbo].[aspnet_Membership].[FailedPasswordAnswerAttemptWindowStart],

            [dbo].[aspnet_Membership].[Comment],

            [dbo].[aspnet_Users].[ApplicationId],

            [dbo].[aspnet_Users].[UserName],

            [dbo].[aspnet_Users].[MobileAlias],

            [dbo].[aspnet_Users].[IsAnonymous],

            [dbo].[aspnet_Users].[LastActivityDate]

  FROM [dbo].[aspnet_Membership] INNER JOIN [dbo].[aspnet_Users]

      ON [dbo].[aspnet_Membership].[UserId] = [dbo].[aspnet_Users].[UserId]

  ')

END

GO

/*************************************************************/

/*************************************************************/

--

--Create Membership schema version

--

DECLARE @command nvarchar(4000)

SET @command = 'GRANT EXECUTE ON [dbo].aspnet_RegisterSchemaVersion TO ' + QUOTENAME(user)

EXECUTE (@command)

GO

EXEC [dbo].aspnet_RegisterSchemaVersion N'Membership', N'1', 1, 1

GO

/*************************************************************/

/*************************************************************/

--

--Create Membership roles

--

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Membership_FullAccess'  ) )

EXEC sp_addrole N'aspnet_Membership_FullAccess'

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Membership_BasicAccess'  ) )

EXEC sp_addrole N'aspnet_Membership_BasicAccess'

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Membership_ReportingAccess'  ) )

EXEC sp_addrole N'aspnet_Membership_ReportingAccess'

GO

EXEC sp_addrolemember N'aspnet_Membership_BasicAccess', N'aspnet_Membership_FullAccess'

EXEC sp_addrolemember N'aspnet_Membership_ReportingAccess', N'aspnet_Membership_FullAccess'

GO

--

--Stored Procedure rights for BasicAcess

--

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByUserId TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByName TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByEmail TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetPassword TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetPasswordWithFormat TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_UpdateUserInfo TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetNumberOfUsersOnline TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_CheckSchemaVersion TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_RegisterSchemaVersion TO aspnet_Membership_BasicAccess

GRANT EXECUTE ON dbo.aspnet_UnRegisterSchemaVersion TO aspnet_Membership_BasicAccess

--

--Stored Procedure rights for ReportingAccess

--

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByUserId TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByName TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetUserByEmail TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetAllUsers TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_GetNumberOfUsersOnline TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_FindUsersByName TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Membership_FindUsersByEmail TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_CheckSchemaVersion TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_RegisterSchemaVersion TO aspnet_Membership_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_UnRegisterSchemaVersion TO aspnet_Membership_ReportingAccess

--

--Additional stored procedure rights for FullAccess

--

GRANT EXECUTE ON dbo.aspnet_Users_DeleteUser TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_CreateUser TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_SetPassword TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_ResetPassword TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_UpdateUser TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_ChangePasswordQuestionAndAnswer TO aspnet_Membership_FullAccess

GRANT EXECUTE ON dbo.aspnet_Membership_UnlockUser TO aspnet_Membership_FullAccess

--

--View rights

--

GRANT SELECT ON dbo.vw_aspnet_Applications TO aspnet_Membership_ReportingAccess

GRANT SELECT ON dbo.vw_aspnet_Users TO aspnet_Membership_ReportingAccess

GRANT SELECT ON dbo.vw_aspnet_MembershipUsers TO aspnet_Membership_ReportingAccess

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @command nvarchar(4000)

SET @command = 'REVOKE EXECUTE ON [dbo].aspnet_RegisterSchemaVersion FROM ' + QUOTENAME(user)

EXECUTE (@command)

GO

PRINT '--------------------------------------------'

PRINT 'Completed execution of InstallMembership.SQL'

PRINT '--------------------------------------------'

/**********************************************************************/

/* InstallRoles.SQL                                                   */

/*                                                                    */

/* Installs the tables, triggers and stored procedures necessary for  */

/* supporting the aspnet feature of ASP.Net                           */

/*                                                                    */

/* InstallCommon.sql must be run before running this file.            */

/*

** Copyright Microsoft, Inc. 2002

** All Rights Reserved.

*/

/**********************************************************************/

PRINT '--------------------------------------'

PRINT 'Starting execution of InstallRoles.SQL'

PRINT '--------------------------------------'

GO

SET QUOTED_IDENTIFIER OFF -- We don't use quoted identifiers

SET ANSI_NULLS ON         -- We don't want (NULL = NULL) == TRUE

GO

SET ANSI_PADDING ON

GO

SET ANSI_NULL_DFLT_ON ON

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @dbname nvarchar(128)

SET @dbname = N'aspnetdb'

IF (NOT EXISTS (SELECT name

                FROM master.dbo.sysdatabases

                WHERE ('[' + name + ']' = @dbname OR name = @dbname)))

BEGIN

  RAISERROR('The database ''%s'' cannot be found. Please run InstallCommon.sql first.', 18, 1, @dbname)

END

GO

USE [aspnetdb]

GO

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Applications')

                  AND (type = 'U')))

BEGIN

  RAISERROR('The table ''aspnet_Applications'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Users')

                  AND (type = 'U')))

BEGIN

  RAISERROR('The table ''aspnet_Users'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Applications_CreateApplication')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Applications_CreateApplication'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_CreateUser')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Users_CreateUser'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

IF (NOT EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Users_DeleteUser')

               AND (type = 'P')))

BEGIN

  RAISERROR('The stored procedure ''aspnet_Users_DeleteUser'' cannot be found. Please use aspnet_regsql.exe for installing ASP.NET application services.', 18, 1)

END

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_Roles')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_Roles table...'

  CREATE TABLE dbo.aspnet_Roles (

        ApplicationId    uniqueidentifier    NOT NULL FOREIGN KEY REFERENCES dbo.aspnet_Applications(ApplicationId),

        RoleId           uniqueidentifier    PRIMARY KEY  NONCLUSTERED DEFAULT NEWID(),

        RoleName         nvarchar(256)       NOT NULL,

        LoweredRoleName  nvarchar(256)       NOT NULL,

        Description      nvarchar(256)       )

 CREATE UNIQUE  CLUSTERED  INDEX aspnet_Roles_index1 ON  dbo.aspnet_Roles(ApplicationId, LoweredRoleName)

END

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'aspnet_UsersInRoles')

                  AND (type = 'U')))

BEGIN

  PRINT 'Creating the aspnet_UsersInRoles table...'

  CREATE TABLE dbo.aspnet_UsersInRoles (

        UserId     uniqueidentifier NOT NULL PRIMARY KEY(UserId, RoleId) FOREIGN KEY REFERENCES dbo.aspnet_Users (UserId),

        RoleId     uniqueidentifier NOT NULL FOREIGN KEY REFERENCES dbo.aspnet_Roles (RoleId))

CREATE INDEX aspnet_UsersInRoles_index ON  dbo.aspnet_UsersInRoles(RoleId)

END

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_IsUserInRole')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_IsUserInRole

GO

CREATE PROCEDURE dbo.aspnet_UsersInRoles_IsUserInRole

    @ApplicationName  nvarchar(256),

    @UserName         nvarchar(256),

    @RoleName         nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(2)

    DECLARE @UserId uniqueidentifier

    SELECT  @UserId = NULL

    DECLARE @RoleId uniqueidentifier

    SELECT  @RoleId = NULL

SELECT  @UserId = UserId

    FROM    dbo.aspnet_Users

    WHERE   LoweredUserName = LOWER(@UserName) AND ApplicationId = @ApplicationId

IF (@UserId IS NULL)

        RETURN(2)

SELECT  @RoleId = RoleId

    FROM    dbo.aspnet_Roles

    WHERE   LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @ApplicationId

IF (@RoleId IS NULL)

        RETURN(3)

IF (EXISTS( SELECT * FROM dbo.aspnet_UsersInRoles WHERE  UserId = @UserId AND RoleId = @RoleId))

        RETURN(1)

    ELSE

        RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_GetRolesForUser')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_GetRolesForUser

GO

CREATE PROCEDURE dbo.aspnet_UsersInRoles_GetRolesForUser

    @ApplicationName  nvarchar(256),

    @UserName         nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(1)

    DECLARE @UserId uniqueidentifier

    SELECT  @UserId = NULL

SELECT  @UserId = UserId

    FROM    dbo.aspnet_Users

    WHERE   LoweredUserName = LOWER(@UserName) AND ApplicationId = @ApplicationId

IF (@UserId IS NULL)

        RETURN(1)

SELECT r.RoleName

    FROM   dbo.aspnet_Roles r, dbo.aspnet_UsersInRoles ur

    WHERE  r.RoleId = ur.RoleId AND r.ApplicationId = @ApplicationId AND ur.UserId = @UserId

    ORDER BY r.RoleName

    RETURN (0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Roles_CreateRole')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Roles_CreateRole

GO

CREATE PROCEDURE dbo.aspnet_Roles_CreateRole

    @ApplicationName  nvarchar(256),

    @RoleName         nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

        BEGIN TRANSACTION

        SET @TranStarted = 1

    END

    ELSE

        SET @TranStarted = 0

EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName, @ApplicationId OUTPUT

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF (EXISTS(SELECT RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @ApplicationId))

    BEGIN

        SET @ErrorCode = 1

        GOTO Cleanup

    END

INSERT INTO dbo.aspnet_Roles

                (ApplicationId, RoleName, LoweredRoleName)

         VALUES (@ApplicationId, @RoleName, LOWER(@RoleName))

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

        COMMIT TRANSACTION

    END

RETURN(0)

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

        ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Roles_DeleteRole')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Roles_DeleteRole

GO

CREATE PROCEDURE dbo.aspnet_Roles_DeleteRole

    @ApplicationName            nvarchar(256),

    @RoleName                   nvarchar(256),

    @DeleteOnlyIfRoleIsEmpty    bit

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(1)

DECLARE @ErrorCode     int

    SET @ErrorCode = 0

DECLARE @TranStarted   bit

    SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

    BEGIN

        BEGIN TRANSACTION

        SET @TranStarted = 1

    END

    ELSE

        SET @TranStarted = 0

DECLARE @RoleId   uniqueidentifier

    SELECT  @RoleId = NULL

    SELECT  @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @ApplicationId

IF (@RoleId IS NULL)

    BEGIN

        SELECT @ErrorCode = 1

        GOTO Cleanup

    END

    IF (@DeleteOnlyIfRoleIsEmpty <> 0)

    BEGIN

        IF (EXISTS (SELECT RoleId FROM dbo.aspnet_UsersInRoles  WHERE @RoleId = RoleId))

        BEGIN

            SELECT @ErrorCode = 2

            GOTO Cleanup

        END

    END

DELETE FROM dbo.aspnet_UsersInRoles  WHERE @RoleId = RoleId

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

DELETE FROM dbo.aspnet_Roles WHERE @RoleId = RoleId  AND ApplicationId = @ApplicationId

IF( @@ERROR <> 0 )

    BEGIN

        SET @ErrorCode = -1

        GOTO Cleanup

    END

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

        COMMIT TRANSACTION

    END

RETURN(0)

Cleanup:

IF( @TranStarted = 1 )

    BEGIN

        SET @TranStarted = 0

        ROLLBACK TRANSACTION

    END

RETURN @ErrorCode

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Roles_RoleExists')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Roles_RoleExists

GO

CREATE PROCEDURE dbo.aspnet_Roles_RoleExists

    @ApplicationName  nvarchar(256),

    @RoleName         nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(0)

    IF (EXISTS (SELECT RoleName FROM dbo.aspnet_Roles WHERE LOWER(@RoleName) = LoweredRoleName AND ApplicationId = @ApplicationId ))

        RETURN(1)

    ELSE

        RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_AddUsersToRoles')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles

GO

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_RemoveUsersFromRoles')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles

GO

DECLARE @ver            int

DECLARE @version        nchar(100)

DECLARE @dot            int

DECLARE @hyphen         int

DECLARE @SqlToExec      nchar(4000)

SELECT @ver = 7

SELECT @version = @@Version

SELECT @hyphen  = CHARINDEX(N' - ', @version)

IF (NOT(@hyphen IS NULL) AND @hyphen > 0)

BEGIN

    SELECT @hyphen = @hyphen + 3

    SELECT @dot    = CHARINDEX(N'.', @version, @hyphen)

    IF (NOT(@dot IS NULL) AND @dot > @hyphen)

    BEGIN

        SELECT @version = SUBSTRING(@version, @hyphen, @dot - @hyphen)

        SELECT @ver     = CONVERT(int, @version)

    END

END

IF (@ver > 7)

SELECT @SqlToExec = N'

CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles

 @ApplicationName  nvarchar(256),

 @UserNames    nvarchar(4000),

 @RoleNames    nvarchar(4000),

 @CurrentTimeUtc   datetime

AS

BEGIN

 DECLARE @AppId uniqueidentifier

 SELECT  @AppId = NULL

 SELECT  @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

 IF (@AppId IS NULL)

  RETURN(2)

 DECLARE @TranStarted   bit

 SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

 BEGIN

  BEGIN TRANSACTION

  SET @TranStarted = 1

 END

DECLARE @tbNames table(Name nvarchar(256) NOT NULL PRIMARY KEY)

 DECLARE @tbRoles table(RoleId uniqueidentifier NOT NULL PRIMARY KEY)

 DECLARE @tbUsers table(UserId uniqueidentifier NOT NULL PRIMARY KEY)

 DECLARE @Num  int

 DECLARE @Pos  int

 DECLARE @NextPos int

 DECLARE @Name  nvarchar(256)

SET @Num = 0

 SET @Pos = 1

 WHILE(@Pos <= LEN(@RoleNames))

 BEGIN

  SELECT @NextPos = CHARINDEX(N'','', @RoleNames,  @Pos)

  IF (@NextPos = 0 OR @NextPos IS NULL)

   SELECT @NextPos = LEN(@RoleNames) + 1

  SELECT @Name = RTRIM(LTRIM(SUBSTRING(@RoleNames, @Pos, @NextPos - @Pos)))

  SELECT @Pos = @NextPos+1

INSERT INTO @tbNames VALUES (@Name)

  SET @Num = @Num + 1

 END

INSERT INTO @tbRoles

   SELECT RoleId

   FROM   dbo.aspnet_Roles ar, @tbNames t

   WHERE  LOWER(t.Name) = ar.LoweredRoleName AND ar.ApplicationId = @AppId

IF (@@ROWCOUNT <> @Num)

 BEGIN

  SELECT TOP 1 Name

  FROM   @tbNames

  WHERE  LOWER(Name) NOT IN (SELECT ar.LoweredRoleName FROM dbo.aspnet_Roles ar,  @tbRoles r WHERE r.RoleId = ar.RoleId)

  IF( @TranStarted = 1 )

   ROLLBACK TRANSACTION

  RETURN(2)

 END

DELETE FROM @tbNames WHERE 1=1

 SET @Num = 0

 SET @Pos = 1

WHILE(@Pos <= LEN(@UserNames))

 BEGIN

  SELECT @NextPos = CHARINDEX(N'','', @UserNames,  @Pos)

  IF (@NextPos = 0 OR @NextPos IS NULL)

   SELECT @NextPos = LEN(@UserNames) + 1

  SELECT @Name = RTRIM(LTRIM(SUBSTRING(@UserNames, @Pos, @NextPos - @Pos)))

  SELECT @Pos = @NextPos+1

INSERT INTO @tbNames VALUES (@Name)

  SET @Num = @Num + 1

 END

INSERT INTO @tbUsers

   SELECT UserId

   FROM   dbo.aspnet_Users ar, @tbNames t

   WHERE  LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @AppId

IF (@@ROWCOUNT <> @Num)

 BEGIN

  DELETE FROM @tbNames

  WHERE LOWER(Name) IN (SELECT LoweredUserName FROM dbo.aspnet_Users au,  @tbUsers u WHERE au.UserId = u.UserId)

INSERT dbo.aspnet_Users (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate)

    SELECT @AppId, NEWID(), Name, LOWER(Name), 0, @CurrentTimeUtc

    FROM   @tbNames

INSERT INTO @tbUsers

    SELECT  UserId

    FROM dbo.aspnet_Users au, @tbNames t

    WHERE   LOWER(t.Name) = au.LoweredUserName AND au.ApplicationId = @AppId

 END

IF (EXISTS (SELECT * FROM dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr WHERE tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId))

 BEGIN

  SELECT TOP 1 UserName, RoleName

  FROM   dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr, aspnet_Users u, aspnet_Roles r

  WHERE  u.UserId = tu.UserId AND r.RoleId = tr.RoleId AND tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId

IF( @TranStarted = 1 )

   ROLLBACK TRANSACTION

  RETURN(3)

 END

INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId)

 SELECT UserId, RoleId

 FROM @tbUsers, @tbRoles

IF( @TranStarted = 1 )

  COMMIT TRANSACTION

 RETURN(0)

END'

ELSE

SELECT @SqlToExec = N'

CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles

 @ApplicationName nvarchar(256),

 @UserNames   nvarchar(4000),

 @RoleNames   nvarchar(4000),

 @CurrentTimeUtc  datetime

AS

BEGIN

 DECLARE @AppId uniqueidentifier

 SELECT  @AppId = NULL

 SELECT  @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

 IF (@AppId IS NULL)

  RETURN(2)

DECLARE @TranStarted   bit

 SET @TranStarted = 0

 IF( @@TRANCOUNT = 0 )

 BEGIN

  BEGIN TRANSACTION

  SET @TranStarted = 1

 END

DECLARE @RoleId  uniqueidentifier

 DECLARE @UserId  uniqueidentifier

 DECLARE @UserName nvarchar(256)

 DECLARE @RoleName nvarchar(256)

DECLARE @CurrentPosU int

 DECLARE @NextPosU  int

 DECLARE @CurrentPosR int

 DECLARE @NextPosR  int

SELECT  @CurrentPosU = 1

WHILE(@CurrentPosU <= LEN(@UserNames))

 BEGIN

  SELECT @NextPosU = CHARINDEX(N'','', @UserNames,  @CurrentPosU)

  IF (@NextPosU = 0 OR @NextPosU IS NULL)

   SELECT @NextPosU = LEN(@UserNames) + 1

SELECT @UserName = SUBSTRING(@UserNames, @CurrentPosU, @NextPosU - @CurrentPosU)

  SELECT @CurrentPosU = @NextPosU+1

SELECT @CurrentPosR = 1

  WHILE(@CurrentPosR <= LEN(@RoleNames))

  BEGIN

   SELECT @NextPosR = CHARINDEX(N'','', @RoleNames,  @CurrentPosR)

   IF (@NextPosR = 0 OR @NextPosR IS NULL)

    SELECT @NextPosR = LEN(@RoleNames) + 1

   SELECT @RoleName = SUBSTRING(@RoleNames, @CurrentPosR, @NextPosR - @CurrentPosR)

   SELECT @CurrentPosR = @NextPosR+1

   SELECT @RoleId = NULL

   SELECT @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @AppId

   IF (@RoleId IS NULL)

   BEGIN

    SELECT @RoleName

    IF( @TranStarted = 1 )

     ROLLBACK TRANSACTION

    RETURN(2)

   END

SELECT @UserId = NULL

   SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @AppId

   IF (@UserId IS NULL)

   BEGIN

    EXEC dbo.aspnet_Users_CreateUser @AppId, @UserName, 0, @CurrentTimeUtc, @UserId OUTPUT

   END

IF (EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId))

   BEGIN

    SELECT @UserName, @RoleName

    IF( @TranStarted = 1 )

     ROLLBACK TRANSACTION

    RETURN(3)

   END

   INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId) VALUES(@UserId, @RoleId)

  END

 END

 IF( @TranStarted = 1 )

  COMMIT TRANSACTION

 RETURN(0)

END'

EXEC sp_executesql @SqlToExec

IF (@ver > 7)

SELECT @SqlToExec = N'

CREATE PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles

 @ApplicationName  nvarchar(256),

 @UserNames    nvarchar(4000),

 @RoleNames    nvarchar(4000)

AS

BEGIN

 DECLARE @AppId uniqueidentifier

 SELECT  @AppId = NULL

 SELECT  @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

 IF (@AppId IS NULL)

  RETURN(2)

DECLARE @TranStarted   bit

 SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

 BEGIN

  BEGIN TRANSACTION

  SET @TranStarted = 1

 END

DECLARE @tbNames  table(Name nvarchar(256) NOT NULL PRIMARY KEY)

 DECLARE @tbRoles  table(RoleId uniqueidentifier NOT NULL PRIMARY KEY)

 DECLARE @tbUsers  table(UserId uniqueidentifier NOT NULL PRIMARY KEY)

 DECLARE @Num   int

 DECLARE @Pos   int

 DECLARE @NextPos  int

 DECLARE @Name   nvarchar(256)

 DECLARE @CountAll int

 DECLARE @CountU   int

 DECLARE @CountR   int

SET @Num = 0

 SET @Pos = 1

 WHILE(@Pos <= LEN(@RoleNames))

 BEGIN

  SELECT @NextPos = CHARINDEX(N'','', @RoleNames,  @Pos)

  IF (@NextPos = 0 OR @NextPos IS NULL)

   SELECT @NextPos = LEN(@RoleNames) + 1

  SELECT @Name = RTRIM(LTRIM(SUBSTRING(@RoleNames, @Pos, @NextPos - @Pos)))

  SELECT @Pos = @NextPos+1

INSERT INTO @tbNames VALUES (@Name)

  SET @Num = @Num + 1

 END

INSERT INTO @tbRoles

   SELECT RoleId

   FROM   dbo.aspnet_Roles ar, @tbNames t

   WHERE  LOWER(t.Name) = ar.LoweredRoleName AND ar.ApplicationId = @AppId

 SELECT @CountR = @@ROWCOUNT

IF (@CountR <> @Num)

 BEGIN

  SELECT TOP 1 N'''', Name

  FROM   @tbNames

  WHERE  LOWER(Name) NOT IN (SELECT ar.LoweredRoleName FROM dbo.aspnet_Roles ar,  @tbRoles r WHERE r.RoleId = ar.RoleId)

  IF( @TranStarted = 1 )

   ROLLBACK TRANSACTION

  RETURN(2)

 END

DELETE FROM @tbNames WHERE 1=1

 SET @Num = 0

 SET @Pos = 1

WHILE(@Pos <= LEN(@UserNames))

 BEGIN

  SELECT @NextPos = CHARINDEX(N'','', @UserNames,  @Pos)

  IF (@NextPos = 0 OR @NextPos IS NULL)

   SELECT @NextPos = LEN(@UserNames) + 1

  SELECT @Name = RTRIM(LTRIM(SUBSTRING(@UserNames, @Pos, @NextPos - @Pos)))

  SELECT @Pos = @NextPos+1

INSERT INTO @tbNames VALUES (@Name)

  SET @Num = @Num + 1

 END

INSERT INTO @tbUsers

   SELECT UserId

   FROM   dbo.aspnet_Users ar, @tbNames t

   WHERE  LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @AppId

SELECT @CountU = @@ROWCOUNT

 IF (@CountU <> @Num)

 BEGIN

  SELECT TOP 1 Name, N''''

  FROM   @tbNames

  WHERE  LOWER(Name) NOT IN (SELECT au.LoweredUserName FROM dbo.aspnet_Users au,  @tbUsers u WHERE u.UserId = au.UserId)

IF( @TranStarted = 1 )

   ROLLBACK TRANSACTION

  RETURN(1)

 END

SELECT  @CountAll = COUNT(*)

 FROM dbo.aspnet_UsersInRoles ur, @tbUsers u, @tbRoles r

 WHERE   ur.UserId = u.UserId AND ur.RoleId = r.RoleId

IF (@CountAll <> @CountU * @CountR)

 BEGIN

  SELECT TOP 1 UserName, RoleName

  FROM   @tbUsers tu, @tbRoles tr, dbo.aspnet_Users u, dbo.aspnet_Roles r

  WHERE   u.UserId = tu.UserId AND r.RoleId = tr.RoleId AND

      tu.UserId NOT IN (SELECT ur.UserId FROM dbo.aspnet_UsersInRoles ur WHERE ur.RoleId = tr.RoleId) AND

      tr.RoleId NOT IN (SELECT ur.RoleId FROM dbo.aspnet_UsersInRoles ur WHERE ur.UserId = tu.UserId)

  IF( @TranStarted = 1 )

   ROLLBACK TRANSACTION

  RETURN(3)

 END

DELETE FROM dbo.aspnet_UsersInRoles

 WHERE UserId IN (SELECT UserId FROM @tbUsers)

   AND RoleId IN (SELECT RoleId FROM @tbRoles)

 IF( @TranStarted = 1 )

  COMMIT TRANSACTION

 RETURN(0)

END

'

ELSE

SELECT @SqlToExec = N'

CREATE PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles

 @ApplicationName  nvarchar(256),

 @UserNames    nvarchar(4000),

 @RoleNames    nvarchar(4000)

AS

BEGIN

 DECLARE @AppId uniqueidentifier

 SELECT  @AppId = NULL

 SELECT  @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

 IF (@AppId IS NULL)

  RETURN(2)

DECLARE @TranStarted   bit

 SET @TranStarted = 0

IF( @@TRANCOUNT = 0 )

 BEGIN

  BEGIN TRANSACTION

  SET @TranStarted = 1

 END

DECLARE @RoleId  uniqueidentifier

 DECLARE @UserId  uniqueidentifier

 DECLARE @UserName nvarchar(256)

 DECLARE @RoleName nvarchar(256)

DECLARE @CurrentPosU int

 DECLARE @NextPosU  int

 DECLARE @CurrentPosR int

 DECLARE @NextPosR  int

SELECT  @CurrentPosU = 1

WHILE(@CurrentPosU <= LEN(@UserNames))

 BEGIN

  SELECT @NextPosU = CHARINDEX(N'','', @UserNames,  @CurrentPosU)

  IF (@NextPosU = 0  OR @NextPosU IS NULL)

   SELECT @NextPosU = LEN(@UserNames)+1

  SELECT @UserName = SUBSTRING(@UserNames, @CurrentPosU, @NextPosU - @CurrentPosU)

  SELECT @CurrentPosU = @NextPosU+1

SELECT @CurrentPosR = 1

  WHILE(@CurrentPosR <= LEN(@RoleNames))

  BEGIN

   SELECT @NextPosR = CHARINDEX(N'','', @RoleNames,  @CurrentPosR)

   IF (@NextPosR = 0 OR @NextPosR IS NULL)

    SELECT @NextPosR = LEN(@RoleNames)+1

   SELECT @RoleName = SUBSTRING(@RoleNames, @CurrentPosR, @NextPosR - @CurrentPosR)

   SELECT @CurrentPosR = @NextPosR+1

SELECT @RoleId = NULL

   SELECT @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @AppId

   IF (@RoleId IS NULL)

   BEGIN

    SELECT N'''', @RoleName

    IF( @TranStarted = 1 )

     ROLLBACK TRANSACTION

    RETURN(2)

   END

SELECT @UserId = NULL

   SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @AppId

   IF (@UserId IS NULL)

   BEGIN

    SELECT @UserName, N''''

    IF( @TranStarted = 1 )

     ROLLBACK TRANSACTION

    RETURN(1)

   END

IF (NOT(EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId)))

   BEGIN

    SELECT @UserName, @RoleName

    IF( @TranStarted = 1 )

     ROLLBACK TRANSACTION

    RETURN(3)

   END

   DELETE FROM dbo.aspnet_UsersInRoles WHERE (UserId = @UserId AND RoleId = @RoleId)

  END

 END

 IF( @TranStarted = 1 )

  COMMIT TRANSACTION

 RETURN(0)

END

'

EXEC sp_executesql @SqlToExec

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_GetUsersInRoles')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_GetUsersInRoles

GO

CREATE PROCEDURE dbo.aspnet_UsersInRoles_GetUsersInRoles

    @ApplicationName  nvarchar(256),

    @RoleName         nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(1)

     DECLARE @RoleId uniqueidentifier

     SELECT  @RoleId = NULL

SELECT  @RoleId = RoleId

     FROM    dbo.aspnet_Roles

     WHERE   LOWER(@RoleName) = LoweredRoleName AND ApplicationId = @ApplicationId

IF (@RoleId IS NULL)

         RETURN(1)

SELECT u.UserName

    FROM   dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur

    WHERE  u.UserId = ur.UserId AND @RoleId = ur.RoleId AND u.ApplicationId = @ApplicationId

    ORDER BY u.UserName

    RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_UsersInRoles_FindUsersInRole')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_UsersInRoles_FindUsersInRole

GO

CREATE PROCEDURE dbo.aspnet_UsersInRoles_FindUsersInRole

    @ApplicationName  nvarchar(256),

    @RoleName         nvarchar(256),

    @UserNameToMatch  nvarchar(256)

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN(1)

     DECLARE @RoleId uniqueidentifier

     SELECT  @RoleId = NULL

SELECT  @RoleId = RoleId

     FROM    dbo.aspnet_Roles

     WHERE   LOWER(@RoleName) = LoweredRoleName AND ApplicationId = @ApplicationId

IF (@RoleId IS NULL)

         RETURN(1)

SELECT u.UserName

    FROM   dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur

    WHERE  u.UserId = ur.UserId AND @RoleId = ur.RoleId AND u.ApplicationId = @ApplicationId AND LoweredUserName LIKE LOWER(@UserNameToMatch)

    ORDER BY u.UserName

    RETURN(0)

END

GO

/*************************************************************/

/*************************************************************/

IF (EXISTS (SELECT name

              FROM sysobjects

             WHERE (name = N'aspnet_Roles_GetAllRoles')

               AND (type = 'P')))

DROP PROCEDURE dbo.aspnet_Roles_GetAllRoles

GO

CREATE PROCEDURE dbo.aspnet_Roles_GetAllRoles (

    @ApplicationName           nvarchar(256))

AS

BEGIN

    DECLARE @ApplicationId uniqueidentifier

    SELECT  @ApplicationId = NULL

    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

    IF (@ApplicationId IS NULL)

        RETURN

    SELECT RoleName

    FROM   dbo.aspnet_Roles WHERE ApplicationId = @ApplicationId

    ORDER BY RoleName

END

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'vw_aspnet_Roles')

                  AND (type = 'V')))

BEGIN

  PRINT 'Creating the vw_aspnet_Roles view...'

  EXEC(N'

  CREATE VIEW [dbo].[vw_aspnet_Roles]

  AS SELECT [dbo].[aspnet_Roles].[ApplicationId], [dbo].[aspnet_Roles].[RoleId], [dbo].[aspnet_Roles].[RoleName], [dbo].[aspnet_Roles].[LoweredRoleName], [dbo].[aspnet_Roles].[Description]

  FROM [dbo].[aspnet_Roles]

  ')

END

GO

/*************************************************************/

/*************************************************************/

IF (NOT EXISTS (SELECT name

                FROM sysobjects

                WHERE (name = N'vw_aspnet_UsersInRoles')

                  AND (type = 'V')))

BEGIN

  PRINT 'Creating the vw_aspnet_UsersInRoles view...'

  EXEC(N'

  CREATE VIEW [dbo].[vw_aspnet_UsersInRoles]

  AS SELECT [dbo].[aspnet_UsersInRoles].[UserId], [dbo].[aspnet_UsersInRoles].[RoleId]

  FROM [dbo].[aspnet_UsersInRoles]

  ')

END

GO

/*************************************************************/

/*************************************************************/

--

--Create Role Manager schema version

--

DECLARE @command nvarchar(4000)

SET @command = 'GRANT EXECUTE ON [dbo].aspnet_RegisterSchemaVersion TO ' + QUOTENAME(user)

EXECUTE (@command)

GO

EXEC [dbo].aspnet_RegisterSchemaVersion N'Role Manager', N'1', 1, 1

GO

/*************************************************************/

/*************************************************************/

--

--Create Role Manager roles

--

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Roles_FullAccess'  ) )

EXEC sp_addrole N'aspnet_Roles_FullAccess'

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Roles_BasicAccess'  ) )

EXEC sp_addrole N'aspnet_Roles_BasicAccess'

IF ( NOT EXISTS ( SELECT name

                  FROM sysusers

                  WHERE issqlrole = 1

                  AND name = N'aspnet_Roles_ReportingAccess'  ) )

EXEC sp_addrole N'aspnet_Roles_ReportingAccess'

GO

EXEC sp_addrolemember N'aspnet_Roles_BasicAccess', N'aspnet_Roles_FullAccess'

EXEC sp_addrolemember N'aspnet_Roles_ReportingAccess', N'aspnet_Roles_FullAccess'

GO

--

--Stored Procedure rights for BasicAccess

--

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_IsUserInRole TO aspnet_Roles_BasicAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_GetRolesForUser TO aspnet_Roles_BasicAccess

GRANT EXECUTE ON dbo.aspnet_CheckSchemaVersion TO aspnet_Roles_BasicAccess

GRANT EXECUTE ON dbo.aspnet_RegisterSchemaVersion TO aspnet_Roles_BasicAccess

GRANT EXECUTE ON dbo.aspnet_UnRegisterSchemaVersion TO aspnet_Roles_BasicAccess

--

--Stored Procedure rights for ReportingAccess

--

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_IsUserInRole TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_GetRolesForUser TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Roles_RoleExists TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_GetUsersInRoles TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_FindUsersInRole TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_Roles_GetAllRoles TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_CheckSchemaVersion TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_RegisterSchemaVersion TO aspnet_Roles_ReportingAccess

GRANT EXECUTE ON dbo.aspnet_UnRegisterSchemaVersion TO aspnet_Roles_ReportingAccess

--

--Additional stored procedure rights for FullAccess

--

GRANT EXECUTE ON dbo.aspnet_Roles_CreateRole TO aspnet_Roles_FullAccess

GRANT EXECUTE ON dbo.aspnet_Roles_DeleteRole TO aspnet_Roles_FullAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_AddUsersToRoles TO aspnet_Roles_FullAccess

GRANT EXECUTE ON dbo.aspnet_UsersInRoles_RemoveUsersFromRoles TO aspnet_Roles_FullAccess

--

--View rights

--

GRANT SELECT ON dbo.vw_aspnet_Applications TO aspnet_Roles_ReportingAccess

GRANT SELECT ON dbo.vw_aspnet_Users TO aspnet_Roles_ReportingAccess

GRANT SELECT ON dbo.vw_aspnet_Roles TO aspnet_Roles_ReportingAccess

GRANT SELECT ON dbo.vw_aspnet_UsersInRoles TO aspnet_Roles_ReportingAccess

GO

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*************************************************************/

DECLARE @command nvarchar(4000)

SET @command = 'REVOKE EXECUTE ON [dbo].aspnet_RegisterSchemaVersion FROM ' + QUOTENAME(user)

EXECUTE (@command)

GO

PRINT '---------------------------------------'

PRINT 'Completed execution of InstallRoles.SQL'

PRINT '---------------------------------------'

上一篇:ASP.NET Forms身份验证概述


下一篇:video视频播放以及主流浏览器兼容