数据库所有者 (dbo)
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 属于创建该对象的用户,而不是 dbo。
用创建该对象的用户名限定。
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 属于创建该对象的用户,而不是 dbo。
用创建该对象的用户名限定。
加入一句 use YouDataBase,这可能是你没有引用你的数据库
运行以下脚本建立act_bal表CREATE TABLE [test].[act_bal] (
[act_id] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[bank_code] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[act_qua_code] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[act_name_code] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[act_no] [int] NULL ,
[act_bank_no] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[act_old_bal] [char] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[act_cur_bal] [char] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[act_bank_code] [int] NULL ,
[act_dep] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[act_date] [datetime] NULL
) ON [PRIMARY]
GO然后在分析器中用test 用户登录,
执行 Select * from act_bal,出错,提示无该对象;
运行 select * from test.act_bal 则正常
把test用户在czzh中的角色加入db_owner中即可。
这个时候 select * form act_bal就等于select * form test.act_bal
如何将一个表格的所有者变成另一个人。
如将表格tblType的所有者从myname变成dbo???
谢谢了,“大力”
declare cursor1 cursor for select name from sysobjects where xtype='u'
declare
@i varchar(1000)
open cursor1
fetch cursor1 into @i
while @@fetch_status=0
begin
exec sp_changeobjectowner @i,'dbo'
fetch cursor1 into @i
end
close cursor1
deallocate cursor1
exec spchangeobjectowner 'myname.'+@i,'dbo'
就行了,但我改了不行,该如何改?????
exec sp_changeobjectowner @i,'dbo'