in

ASP.NET Weblogs

This Blog

Syndication

ASP.NET Chinese Blogs

Browse by Tags

All Tags » DATABASE (RSS)
  • SQL2000数据库中删除“坏表”的方法

    在一些网站或者软件系统中,由于安全或者程序异常等问题,可能会在SQL Server 2000中造成一个异常问题:在企业管理器中打开数据库发现有一些“坏表”,即无法使用,也无法正常删除。其原因往往是因为在尝试建表的过程中,只向数据库服务器的系统表sysobjects中写入了类型为“U”的记录,却并未真正在数据库中成功创建该表的实体。ok,解决问题有思路了: 假设“坏表”的表名为cmd,那么我们在查询分析器中对当前的数据库写一个sql语句: delete from sysobjects where [name]='cmd' and xtype='U' 按F5执行,可能会碰到一个错误提示:“未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。” 解决这个小小的问题的方法是:打开mssql server 属性---》服务器选项----》启用对系统目录的特殊更新(允许对系统目录进行直接修改) 即可。之后重新在查询分析器中执行刚才的sql语句。 执行成功后。在企业管理器中会发现那个坏表已经不存在了。 [ 注:SQL2005中,由于微软做了重大调整,正常情况下不允许对系统表进行即席更新操作。所以本文提到的问题目前仅适用于SQL2000数据库,敬请注意 ] Read More...
  • asp.net 应用中的Membership 重置密码问题

    asp.net 2.0中引入的Membership机制给我们做web开发带来很多便利,使得我们在做很多项目开发时处理用户和角色及权限问题时减少了相当的工作量。不过我们开发中可能会碰到一个小小的问题如下: 我们知道MembershipUser中有如下重载的方法 MembershipUser.ResetPassword () :将用户密码重置为一个自动生成的新密码。 MembershipUser.ResetPassword (String passwordAnswer) :将用户密码重置为一个自动生成的新密码。 msdn中有如下描述: ResetPassword 调用 ProviderName 属性所引用的成员资格提供程序的 MembershipProvider.ResetPassword 方法,以将成员资格用户的密码重置为自动生成的新密码。然后将该新密码返回到调用方。 如果 EnablePasswordReset 为 false ,则成员资格提供程序将返回一个异常。 如果 RequiresQuestionAndAnswer 为 true ,则必须使用以密码提示问题答案作为参数的 ResetPassword 重载方法,并提供成员资格用户的密码。如果需要密码答案并提供了不正确的密码答案,成员资格提供程序将引发 MembershipPasswordException。 而另外一个方法 MembershipUser.ChangePassword(String oldPassword, String newPassword) 又必须提供原始密码,那么这里就产生了一个矛盾:我们希望用户能够通过安全问题和答案来作为找回密码,又希望管理员可以重置某用户的密码怎么办?上述方法均无法直接使用,要么使用...
  • SQL2005数据库镜像之数据库用户问题

    数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。镜像的拷贝是一个备用的拷贝,不能直接访问,它只用在错误恢复的情况下。SQL2005的这一特性给数据库系统维护人员带来了不错的实惠,而给最终用户的体验也是不错的。至于如何配置数据库镜像系统,大家可以到 TechNet 中文网络广播 中查找一下相关视频教程,尤其推荐大家去看看MVP 牛可 的相关讲座视频哦。再这里就不多说了。我们直奔主题吧!! 在使用数据库镜像功能时,如果我们使用的是工作组,那么我们需要注意一下数据库用户的问题:用普通方式创建的数据库用户,在主数据库中和镜像数据库中是有一些差异的,而这个差异最终会造成一个“奇怪”的结果,我们在主数据库和镜像数据库中对某数据库影射的“相同用户”,在发生故障转移后数据库验证会发生异常,称该用户无法登录我们的数据库, WHY? 原来是两个数据库中的同名用户在系统表syslogins中的sid不同造成的。解决方法就是在两个数据库上建立同名同sid的用户,具体方法如下: 假设有镜像的服务器是MIR-A和MI-B,要访问镜像数据库的登录账号是tom,使用下面这个方法就可以在MIR-A上创建登录名tom,然后在镜像数据库中创建数据库用户tom并映射到登录名tom 执行下列语句取回tom的sid select [name], sid from syslogins where [name] = 'tom' ------ ----------------------------------------------- tom 0xD6AABCC8F83E3243A6C3C97F28A4CB55...
More Posts