Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[经验] 小事成败关键--dvbbs sql 至dz5.0

[复制链接]
weic 发表于 2006-11-15 14:30:37 | 显示全部楼层 |阅读模式
这个也不全说是针对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)
01.gif

2   "还原为数据库库"中输入还原后的数据库名(自己可以起一个).这里我起为dvbbs.还原选择"从设备" --> 选择设备 -- >添加 --> 添加你的备份文件 --> 确定-->回到数据库还原的界面 (如图2,3)
02.gif
03.gif


3   然后点"选项"-->选择"在现有数据库上强制还原"(钩上) --> 别的动不动都可以的了.当然将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名(如图4)
04.gif


4   还原完我们就可以看到数据库多了一个dvbbs了(如图5)
05.gif

5   按说明,把管理员表(Dv_Admin)、帖子表(Dv_bbs1,bbs2,bbs3)、板块表(Dv_Board)、好友表(Dv_Friend)、短消息表(Dv_Message)、主题表(Dv_Topic)、附件表(Dv_Upfile)、用户表(Dv_User)字段类型为 nText 的改为 Text 类型(如图6,7)
06.gif
07.gif



6   设置好换换程序的connfig.php(这里跳过,不再细说明了)后.在IE打上地址.如http://localhost/dz5/dv710sql-dz500.php
点开始后.出现了我们最上面的说的问题.(如图8)
08.gif


7   我找了很久,当时都没有发现是错在那,后来看DV_*的"所有者"权限是"153551506"而不是"dbo"才注意到这个问题的.现在我们来说一下,怎么将"153551506"的所有者改为"dbo"
首先,的开"查询分析器"如图(9):
09.gif


8   sql server身份验证那打上用户帐号密码(最好用sa管理登录).连接上服务器(如图10).
10.gif


用到的命令就两种,
一种是单个修改:
  1. exec sp_changeobjectowner '所有者.要改的表名','dbo'
复制代码


一种是批量修改:
  1. 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
11.gif

我们举例到底算了.
单个的我们以Dv_user来吧.153551506改成自己的.
打上
exec sp_changeobjectowner '153551506.Dv_user','dbo'
Ctrl+F5 (没问题)
F5
会显示"注意: 更改对象名的任一部分都可能破坏脚本和存储过程。" 没问题.(如图12)
12.gif


回到"企业管理器"看一下Dvbbs中的dv_user是不是变成dbo了呢^o^(如图13)

13.jpg



这样太慢了.用批的.到查询分析器上打
  1. exec sp_msforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
复制代码
Ctrl+F5 (没问题)
F5
搞定.(如图14)
14.gif


回到"企业管理器"看一下Dvbbs中的dv_user是不是变成dbo了呢(如图15)
15.gif


现在再转换是不是没有问题了呢~呵呵

[ 本帖最后由 weic 于 2006-11-15 14:51 编辑 ]
回复

使用道具 举报

紫琼 发表于 2006-11-15 14:45:51 | 显示全部楼层
顶一个!很好的经验,值得收藏!
回复

使用道具 举报

shmilymmccbb 发表于 2006-11-16 08:30:03 | 显示全部楼层

支持.同意!

细节决定关键!!!!!!!!!!!!1
回复

使用道具 举报

月影传说 发表于 2007-3-11 22:16:41 | 显示全部楼层
真是辛苦了!!解了这么多图~~
回复

使用道具 举报

清风细雨 发表于 2007-3-11 22:44:03 | 显示全部楼层
哈哈wei.c顶你一下 ,支持你哈!!!
回复

使用道具 举报

kook12368 发表于 2007-3-12 00:24:22 | 显示全部楼层
好人啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-12 00:47 , Processed in 0.125807 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表