mysql membershipprovider_如何在SQL中为SQLMembershipProvider添加用户和角色?

我们正在迁移到生产环境,我想编写一个sript,DBA可以在运行我用aspnet_regsql生成的脚本后立即创建一个具有角色的用户.在开发环境中,我一直在Global.asax.cs中使用Membership Provider的API添加用户和角色.但我想避免这种硬编码方法.现在我的T-SQL缺乏经验.我编写了以下脚本,如果我不立即运行它,它就可以工作.

Use MyApps_Prod;

GO

DECLARE @user_identity CHAR(40);

DECLARE @scalar_userid AS NVARCHAR(255);

DECLARE @scalar_roleid AS NVARCHAR(255);

DECLARE @app_id AS NVARCHAR(255);

SET @user_identity = N'AMERICAS\First.Last';

SET @app_id = (SELECT DISTINCT ApplicationId

FROM [dbo].[aspnet_Applications]

WHERE loweredapplicationname = 'MyApplication');

SELECT * FROM [dbo].[aspnet_Users] WHERE UserName = @user_identity

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_Users] WHERE UserName = @user_identity )

BEGIN

INSERT INTO [dbo].aspnet_Users

( [ApplicationId], [UserName], [LoweredUserName], [LastActivityDate] )

VALUES

( @app_id, @user_identity, LOWER(@user_identity), GETDATE());

END;

DECLARE @role_name CHAR(40);

SET @role_name = N'Communicator';

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_Roles] WHERE RoleName = @role_name )

BEGIN

INSERT INTO [dbo].[aspnet_Roles]

( [ApplicationId], [RoleName], [LoweredRoleName])

VALUES

(@app_id, @role_name, LOWER(@role_name))

END;

SET @scalar_userid = (SELECT DISTINCT UserID FROM [dbo].aspnet_Users WHERE UserName = @user_identity);

SET @scalar_roleid = (SELECT DISTINCT RoleID FROM [dbo].aspnet_Roles WHERE RoleName = @role_name);

INSERT INTO [dbo].aspnet_UsersInRoles (UserID, RoleID)

VALUES (

@scalar_userid ,

@scalar_roleid

);

SET @role_name = N'AccessAdministrator';

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_Roles] WHERE RoleName = @role_name )

BEGIN

INSERT INTO [dbo].[aspnet_Roles]

( [ApplicationId], [RoleName], [LoweredRoleName])

VALUES

(@app_id, @role_name, LOWER(@role_name))

END;

SET @scalar_roleid = (SELECT DISTINCT RoleID FROM [dbo].aspnet_Roles WHERE RoleName = @role_name);

INSERT INTO [dbo].aspnet_UsersInRoles (UserID, RoleID)

VALUES (

@scalar_userid ,

@scalar_roleid

);

GO

我发现如果我用分号结束每个INSERT然后添加GO,我可以让INSERT工作,但是我需要重新声明并重新分配每个变量.

真正的SQL开发人员将如何做到这一点?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值