难题来了,关于转移数据库的问题,请指点一下,谢谢!

StarCraftPJF 2007-12-07 11:13:52
sql server2000 建立了一个数据库,现在想要把这个数据库转移到另外一台电脑上

先说一下我建立的这个数据库,首先我分配了一用户:hh56,然后通过这个用户建立了数据库HHWL,所以这个数据库下的表,存储过程,视图等的所有者都为“hh56”

现在说一下我转移的方法,我是COPY了该数据库的两个原文件(MDF和LOG),然后通过“附加数据库”来转移的。当然附加数据库是成功的。

说一下我的问题:转移完成后,在企业管理器中,可以查询该数据库中的所有表和视图等,但是在查询分析器中,我通过“sa”登陆后就不能查询该数据库了,提示“表名无效”。

我以前也遇见过此类问题,解决的方法是:删除该数据库中的用户“hh56”,然后在安全->登陆里面重新新建该用户就可以了。

不过这次就不能这样解决了,因为我用hh56这个用户建立了表、视图等,所以无法删除数据库中的用户“hh56”,提示“该用户拥有对象,不能删除!”,补充一下:如果不先删除hh56,那么就没有办法在安全->登陆里面重新新建该用户。

简单来说,我要使该数据库在查询分析器中也能被查询,请大家给点办法!!

学习,关注……

...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2007-12-07
  • 打赏
  • 举报
回复
sp_changedbowner
更改当前数据库的所有者。

语法
sp_changedbowner [ @loginame = ] 'login'
[ , [ @map = ] remap_alias_flag ]

参数
[@loginame =] 'login'

当前数据库新所有者的登录 ID。login 的数据类型为 sysname,没有默认值。login 必须是已存在的 Microsoft® SQL Server™ 登录或 Microsoft Windows NT® 用户。如果 login 通过当前数据库内的现有别名或用户安全帐户已拥有访问该数据库的权限,则不能成为该数据库的所有者。为了避免这种情况,应先除去当前数据库中的别名或用户。

[@map =] remap_alias_flag

值为 true 或 false,表示旧数据库所有者 (dbo) 的现有别名是映射到当前数据库的新所有者还是要除去。remap_alias_flag 的数据类型为 varchar(5),默认值为 NULL,表示旧 dbo 的任何现有别名均映射到当前数据库的新所有者。false 表示除去旧数据库所有者的现有别名。

返回代码值
0(成功)或 1(失败)

注释
执行 sp_changedbowner 之后,新所有者称为数据库中的 dbo 用户。dbo 拥有执行数据库中所有活动的暗示性权限。

不能更改 master、model 或 tempdb 系统数据库的所有者。

若要显示有效 login 值的列表,请执行 sp_helplogins 存储过程。

执行只有 login 参数的 sp_changedbowner 会将数据库所有权改为 login,并将先前别名为 dbo 的用户别名映射到新数据库所有者。

权限
只有 sysadmin 固定服务器角色成员的成员或当前数据库的所有者才能执行 sp_changedbowner。

示例
下面的示例使用户 Albert 成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到 Albert。

EXEC sp_changedbowner 'Albert'

dawugui 2007-12-07
  • 打赏
  • 举报
回复
更改数据库所有者
Microsoft® SQL Server™ 2000 允许更改当前数据库的所有者。任何具有连接到 SQL Server 权限的用户(SQL Server 登录或 Microsoft Windows NT® 用户)都可成为数据库的所有者。

不能更改系统数据库(master、model 和 tempdb)的所有权。

StarCraftPJF 2007-12-07
  • 打赏
  • 举报
回复
LZ:

先把这用户的权限全部转移给SA.

请问这个怎么做啊???

如果能把数据库的所有者改成“dbo”就可以了,但是怎么改呢???
StarCraftPJF 2007-12-07
  • 打赏
  • 举报
回复
先建立用户,再附加数据库呢

试过了,不行!!
dawugui 2007-12-07
  • 打赏
  • 举报
回复
先把这用户的权限全部转移给SA.

其实你不需要建立用户来附加库.
直接用SA登陆,然后附加.
-狙击手- 2007-12-07
  • 打赏
  • 举报
回复
sp_MSForEachTable 'EXEC sp_changeobjectowner ''?'',''dbo'''
xxsoft2007 2007-12-07
  • 打赏
  • 举报
回复
先建立用户,再附加数据库呢

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧