zoukankan      html  css  js  c++  java
  • discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效

     
    2007年10月30日 星期二 16:23

    对象名 'dnt_templates' 无效解决方法:

    --解决重装系统并还原论坛数据库后,数据库帐号不关联的问题。
    --注意请用sa帐号 进行如下操作
    --操作之前,确保当前SqlServer中存在和原来数据库所有者同名的帐号

    Exec sp_configure 'allow updates',1 --允许更新系统表。
    RECONFIGURE WITH OVERRIDE
    DECLARE @DBName varchar(50),@UserName varchar(50),@Sql varchar(200)
    set @DBName='原数据库名'
    set @UserName='原数据库帐号'
    set @Sql=N'update'+@DBName +N'.dbo.sysusers set sid = (select sid from master.dbo.syslogins where name='+quotename(@UserName,'''')+N') where name='+quotename(@UserName,'''')
    exec(@Sql)
    Exec sp_configure 'allow updates',0 --关闭系统表更新
    RECONFIGURE WITH OVERRIDE
    /***************************************************/
    --例如 您原来数据库被还原后 名为 dntbbs , 该数据库原来的数据库所有者为bill


    如上法不行,请试用下面的方法:

    我有自己的服务器,我将SQLServer数据库备份后,我重新安装了SQLServer并将备份数据库还原,但论坛运行后提示表不存在。


    Discuz!NT SQLServer版的用户可能会遇到这个问题, 下面就详细的解释下问题的原因和解决办法。

    例如:新建数据库discuz,新建一个用户user1,指定user1对数据库discuz有权限,然后安装Discuz!NT SQLServer版,Discuz!NT的安装程序自动为用户创建表,此时discuz中的表的所有者就是user1,这样的好处是不需要user1用户拥有任何sqlserver权限身份,安全性高(有的用户用sa或其它管理员帐号来运行论坛,本地测试当然是无所谓,但如果是在服务器上这么做,一旦被恶意利用,可能就要威胁到所有数据库甚至整个服务器的系统!还有一些程序没有安装程序,只是提供SQL脚本让用户创建表,很多用户就用管理员帐号来创建了表,那时表的所有者为dbo,因此一般不出现该问题)。后来备份数据库并重新安装SQLServer,再将备份的数据库还原,discuz数据库的所有者还是user1,但user1不存在,你新指定的用户user2可能也无法再操作discuz数据库。虽然你看到表并没有缺少,但user2却无权访问到它们,因此可能会提示表不存在。

    解决这个问题的办法很简单:假设你的数据库叫discuz,原来的所有者是用户user1,备份还原后你新建立了一个用户user2,遇到上述问题后,以管理员身份进入查询分析器,选择数据库discuz,执行以下SQL命令:

    EXEC sp_change_users_login update_one, 'user1', 'user2'

    执行完毕后,user2即对discuz数据库拥有权限。另外特别需要提醒的是:当你修改了数据库帐号后,请将论坛dnt.config中的小节里面帐号信息也做相应的修改,然后重新启动IIS里的应用程序池。

  • 相关阅读:
    Section 3.1 Shaping Regions
    3D@OpenSource
    查找资料
    Section 3.1 Shaping Regions Again
    USACO Contact IOI’98 TLE
    事项ON丰宁坝上草原
    四叉树@POJ1610 Quad Trees
    在TabCtrl上放View@MFC
    CUGB的一场周赛
    贴图程序进展
  • 原文地址:https://www.cnblogs.com/liugod/p/1029967.html
Copyright © 2011-2022 走看看