这个也不全说是针对dz5.0的.其实也就是mssql的一个小权限的问题.
很多人都说,转dvbbsql版时(本机调试),在确定config.php都写对了,mssql也启动了的情况下,会出现(特别是一些虚拟主机):
当前操作第 1 / 9 步 => 转换会员数据
正在处理第 1 —— 3000 行数据......
[中止操作并返回程序首页]
对象名 'Dv_user' 无效!
这是由于mssql用户所有者权限的原因.其实只要将"所有者"改为"dbo"就中可以了.我们来讲一下实例(包括dvbbs sql的转换过程,如果你只想要看上看说的问题.请跳到第7步).
事由: 是这样的.帮别人转数据时,一个求助者发来一个数据(*.bak).看了一下大小.是80M.问他是什么换到什么?,回,dvbbs至dz5.0 .我就说,那你的数据是什么类型的呀.只给一个*.bak格式的说不准的.他说也不知道.我就用ultraedit看了一下文件头.看来是mssql的备份了.
1 OK!打开企业管理器-->点"数据库" --> 所有任务 --> 还原数据库 (如图1)
2 "还原为数据库库"中输入还原后的数据库名(自己可以起一个).这里我起为dvbbs.还原选择"从设备" --> 选择设备 -- >添加 --> 添加你的备份文件 --> 确定-->回到数据库还原的界面 (如图2,3)
3 然后点"选项"-->选择"在现有数据库上强制还原"(钩上) --> 别的动不动都可以的了.当然将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名(如图4)
4 还原完我们就可以看到数据库多了一个dvbbs了(如图5)
5 按说明,把管理员表(Dv_Admin)、帖子表(Dv_bbs1,bbs2,bbs3)、板块表(Dv_Board)、好友表(Dv_Friend)、短消息表(Dv_Message)、主题表(Dv_Topic)、附件表(Dv_Upfile)、用户表(Dv_User)字段类型为 nText 的改为 Text 类型(如图6,7)
6 设置好换换程序的connfig.php(这里跳过,不再细说明了)后.在IE打上地址.如http://localhost/dz5/dv710sql-dz500.php
点开始后.出现了我们最上面的说的问题.(如图8)
7 我找了很久,当时都没有发现是错在那,后来看DV_*的"所有者"权限是"153551506"而不是"dbo"才注意到这个问题的.现在我们来说一下,怎么将"153551506"的所有者改为"dbo"
首先,的开"查询分析器"如图(9):
8 sql server身份验证那打上用户帐号密码(最好用sa管理登录).连接上服务器(如图10).
用到的命令就两种,
一种是单个修改:
- exec sp_changeobjectowner '所有者.要改的表名','dbo'
复制代码
一种是批量修改:
- exec sp_msforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
复制代码
很多人说.不行呀.打了exec sp_msforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' ' 回去看没反应.还是原来的所有者.打exec sp_changeobjectowner '所有者.要改的表名','dbo' .说
服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
对象 '所有者.要改的表名' 不存在或不是对此操作有效的对象。
老大,看清一下.请转到DVBBS哦!!(默认是"master") 如图11
我们举例到底算了.
单个的我们以Dv_user来吧.153551506改成自己的.
打上exec sp_changeobjectowner '153551506.Dv_user','dbo' Ctrl+F5 (没问题)
F5
会显示"注意: 更改对象名的任一部分都可能破坏脚本和存储过程。" 没问题.(如图12)
回到"企业管理器"看一下Dvbbs中的dv_user是不是变成dbo了呢^o^(如图13)
这样太慢了.用批的.到查询分析器上打- exec sp_msforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
复制代码 Ctrl+F5 (没问题)
F5
搞定.(如图14)
回到"企业管理器"看一下Dvbbs中的dv_user是不是变成dbo了呢(如图15)
现在再转换是不是没有问题了呢~呵呵
[ 本帖最后由 weic 于 2006-11-15 14:51 编辑 ] |