windman

13.Net
posts - 3, comments - 43, trackbacks - 1, articles - 12

ASPNETDB 存储过程(1) 基本及杂类

Posted on 2006-09-06 23:23 风之语 阅读(1622) 评论(8)  编辑 收藏
     操纵基本(表)的存储过程
  1. 注册应用程序。

    CREATE PROCEDURE
    aspnet_Applications_CreateApplication
    (
      @ApplicationName nvarchar(256),
      @ApplicationId uniqueidentifier OUTPUT
    )

    该过程检查应用程序名(@ApplicationName)在表(aspnet_Applications)中是否已经存在,
    如果存在,则表示应用程序已经注册;如果不存在,就为@ApplicationName在应用程序表
    (aspnet_Applications)中新增一行,注册新的应用程序。

    输出参数带回用户ID。
  2. 创建新用户。

    CREATE PROCEDURE aspnet_Users_CreateUser
    (
     @ApplicationId uniqueidentifier,
     @UserName nvarchar(256),
     @IsUserAnonymous bit,
     @LastActivityDate datetime,
     @UserId uniqueidentifier OUTPUT
    )

    输出参数带回新建用户的ID。

    返回值:成功返回0;
    失败(对应于@UserId的用户已存在)返回-1。
  3. 删除用户表的一个或多个从表中的数据,
    当所有从表中的数据都被删除后,也一并删除主表(aspnet_Users)中的数据。
    用户表(aspnet_Users)表的主从关系请参看数据库关系图

    数据库关系图 。

    CREATE PROCEDURE aspnet_Users_DeleteUser
    (
     @ApplicationName nvarchar(256),
     @UserName nvarchar(256),
     @TablesToDeleteFrom int,
     @NumTablesDeletedFrom int OUTPUT
    )

    输入参数@TablesToDeleteFrom为下面表格中单项值或多项值的二进制或值。
    aspnet_Membership 1
    aspnet_UsersInRoles 2
    aspnet_Profile 4
    aspnet_PersonalizationPerUser 8

    输出参数@NumTablesDeletedFrom带回受影响表的数量(0~5)。

    返回值:成功返回 0;
    发生错误,返回 SQL SEVER 系统错误号(@@ERROR)。

    其它(杂类)

     aspnet_AnyDataInTables:检查某个表中是否存在数据,还是空表。

     aspnet_WebEvent_LogEvent:
     由SqlWebEventProvider调用,向aspnet_WebEvent_Events表中写入事件日志。

    以下三个是关于SchemaVersion的(请参见aspnet_SchemaVersions表)。
     aspnet_CheckSchemaVersion
     aspnet_RegisterSchemaVersion
     aspnet_UnRegisterSchemaVersion

    以下两个是ASPNETDB的自维护存储过程
     aspnet_Setup_RemoveAllRoleMembers:SQL SERVER ROLE
     aspnet_Setup_RestorePermissions:SQL SERVER PERMISSION

ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表
ASPNETDB 表和视图(2) 用户成员资格和角色管理 表
ASPNETDB 表和视图(3) 个性化用户配置、页面个性化设置 表 和视图

存储过程(1) 基本及杂类 
ASPNETDB 存储过程(2) 成员资格管理部分 
ASPNETDB 存储过程(3) 角色管理部分
ASPNETDB 存储过程(4) 个性化用户配置部分

Feedback

#1楼  回复 引用 查看   

2006-09-07 10:50 by Jason Cui      
没有一点说明吗?

#2楼[楼主]  回复 引用 查看   

2006-09-07 11:45 by 风之语      
@Jason Cui
感谢回帖,这是我.net 2.0 4大应用功能分析的一部分,
我会陆续贴出表和视图、数据库关系图,最后讨论一下 provider 与ASPNETDB
的关系,请你继续关注我的blog。

#3楼  回复 引用   

2006-09-07 14:25 by aysun168[未注册用户]
关注,谢谢楼主给这么好的资料

#4楼[楼主]  回复 引用 查看   

2006-09-08 02:35 by 风之语      
半夜里我新发了一篇,总算有点说明了。
ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表

#5楼  回复 引用   

2006-09-08 15:48 by 阿福[匿名][未注册用户]
老大,神仙果然就是神仙啊~~~
我顶~~虽然俺看不大懂,但顶先~~~

#6楼  回复 引用 查看   

2006-11-29 08:16 by yunhuasheng      
佩服!

#7楼  回复 引用 查看   

2007-04-04 23:07 by Hunts.C      
@TablesToDeleteFrom为下面表格中单项值或多项值的二进制或值。
我不明白这些值是怎么来的?什么原理?谢谢:)

#8楼[楼主]  回复 引用 查看   

2007-04-17 09:51 by 风之语      
Hunts.C兄:
输入参数@TablesToDeleteFrom为1表示删除aspnet_Membership(成员资格)表中该用户对应的行;为2表示删除aspnet_UsersInRoles(角色部分)表中该用户对应的行...此为单项值
多项值,譬如3(= 1 + 2)表示同时删除aspnet_Membership和aspnet_UsersInRoles中的对应行...
同样要把该用户(user)删全,就应该传入(1 + 2 + 4 + 8 =) 15。
所谓二进制或值,你把上面的加法用二进制运算一次,就会发现其实就是某位的置1或置0(也就是 或 运算了)
至于@TablesToDeleteFrom怎么来的?这个是某个provider调用
aspnet_Users_DeleteUser时由provider传入的,譬如你想删除某User的成员资格,你会调用Membership类的DeleteUser方法,通过MembershipProvider调用aspnet_Users_DeleteUser存储过程,这时@TablesToDeleteFrom就为1,这个1是MembershipProvider指定的