📄 installroles.sql
字号:
/**********************************************************************/
/* 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
/*************************************************************/
/*************************************************************/
/*************************************************************/
/*************************************************************/
/*************************************************************/
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -