当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 更改数据库中表的所属用户的两个方法

MSSQL
利用 Case 敘述做 SQL 的動態排列
SQL Server 2000 与 SQL Server 7.0 版兼容性问题
数据变换和转换注意事项(SQL)
浅谈优化SQLServer数据库服务器内存配置的策略
SQL2000管理SQL7服务器出现TIMEOUT问题的解决
Web环境下MS SQL Server中数据的磁带备份与恢复
SQL Server 7.0与以前的版本相比,安全模式中最重要的
如何用sql语句修改数据表中字段,实现identity(100,1)
sqlserver7.0中如何在死锁产生时自动将其杀死
Sql server使用内存限定在多少最为合适
使用MS SQL7的LINKED SERVER(一)
使用MS SQL7的LINKED SERVER(二)
使用MS SQL7的LINKED SERVER(三)
使用MS SQL7的LINKED SERVER(四)
SQL--JOIN之完全用法
总结 SQL Server 中死锁产生的原因及解决办法
数据库正规化和设计技巧
IDENTITY列的一个有用操作
聚合函数
当SQL Server数据库崩溃时如何恢复?

MSSQL 中的 更改数据库中表的所属用户的两个方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 52 ::
收藏到网摘: n/a

--更改某个表
exec sp_changeobjectowner 'tablename','dbo'


--存储更改全部表
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
 @OldOwner as NVARCHAR(128),
 @NewOwner as NVARCHAR(128)
AS

DECLARE @Name   as NVARCHAR(128)
DECLARE @Owner  as NVARCHAR(128)
DECLARE @OwnerName  as NVARCHAR(128)

DECLARE curObject CURSOR FOR
 select 'Name'   = name,
  'Owner'   = user_name(uid)
 from sysobjects
 where user_name(uid)=@OldOwner
 order by name

OPEN  curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN     
 if @Owner=@OldOwner
 begin
  set @OwnerName = @OldOwner + '.' + rtrim(@Name)
  exec sp_changeobjectowner @OwnerName, @NewOwner
 end
-- select @name,@NewOwner,@OldOwner

 FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject

GO