·我建了一个库,用户表的建立者全是DBO,请问如何将所有用户表都的owner全部必为‘aaa'。我发现了一个sp_changeobjectowner 'authors','aaa'这个存储过程,但只能一个一个改。请问用什么方法可以全部改正。 sp_msforeachtable 'sp_changeobjectowner ?,''aaa''' 先执行这一条语,然后把结果贴出来执行 SELECT 'sp_changeobjectowner @objname = ''' +ltrim(u.name) + '.' + ltrim(s.name) + ''''+', @newowner = ''aaa'')' FROM sysobjects s,sysusers u WHERE s.uid = u.uid AND u.name='dbo' AND xtype='U' AND u.name not like 'INFORMATION%'order by s.name
·前段时间做了一ASP+SQL2000网站,所有数据全部都集中在SQL2000库里。 日前公司想新建一网站,根据需求及规划,其实与前期所做的网站的数据库大部分相同,于是,将网上的数据库复制了下来,欲导入新的网站中,但很快发现了一个问题,不能存取导入的数据,添加角色试试,提示:当前数据库中已存在用户或角色,这一下前不着天,后不着地,有数据在,但就是无法去访问,后来一对比,发现是数据表的所有者为在原网站上登录SQL服务器的帐号名,估计问题大概就出在这里,于是想办法去改这个表的所有者,经过搜索相关文章,修改之后,数据库正常存取,新的网站又正常运行起来了! 现将这一过程记录在案,供参考: 通过本地所设置的SQL帐号和密码登录SQL查询分析器,使用如下命令就可以很轻松地修改表的所有者: use 数据库 go EXEC sp_changeobjectowner ‘原表的所有者.表名’,现在的所有者 F5运行就可以了。 备注: sp_changeobjectowner 更改当前数据库中对象的所有者。 语法 sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner' 参数 [@objname =] 'object' 当前数据库中现有的表、视图或存储过程的名称。object 的数据类型为 nvarchar(517),没有默认值。object 可用现有对象所有者限定,格式为 existing_owner.object。 [@newowner =] 'owner' 即将成为对象的新所有者的安全帐户的名称。owner 的数据类型为 sysname,没有默认值。owner 必须是当前数据库中有效的 Microsoft SQL Server 用户或角色或 Microsoft Windows NT® 用户或组。指定 Windows NT 用户或组时,请指定 Windows NT 用户或组在数据库中已知的名称(用 sp_grantdbaccess 添加)。