SQLServer 过程更改多个对象所有者
2006-07-17 00:25
190 查看
新建存储过程chObjOwner:
CREATE proc chObjOwner( @usrName varchar(20), @newUsrName varchar(50))
as
-- @usrName is the current user
-- @newUsrName is the new user
set nocount on
declare @uid int -- UID of the user
declare @objName varchar(50) -- Object name owned by user
declare @currObjName varchar(50) -- Checks for existing object owned by new user
declare @outStr varchar(256) -- SQL command with 'sp_changeobjectowner'
set @uid = user_id(@usrName)
declare chObjOwnerCur cursor static
for
select name from sysobjects where uid = @uid
open chObjOwnerCur
if @@cursor_rows = 0
begin
print 'Error: No objects owned by ' + @usrName
close chObjOwnerCur
deallocate chObjOwnerCur
return 1
end
fetch next from chObjOwnerCur into @objName
while @@fetch_status = 0
begin
set @currObjName = @newUsrName + "." + @objName
if (object_id(@currObjName) > 0)
print 'WARNING *** ' + @currObjName + ' already exists ***'
set @outStr = "sp_changeobjectowner '" + @usrName + "." + @objName + "','" + @newUsrName + "'"
print @outStr
print 'go'
fetch next from chObjOwnerCur into @objName
end
close chObjOwnerCur
deallocate chObjOwnerCur
set nocount off
return 0
GO
2.使用 sp_changeobjectowner 存储过程在查询分析器中生成"一系列 SQL 语句"Q
3.在查询分析器中运行2步骤中生成的"这一系列 SQL 语句"Q
CREATE proc chObjOwner( @usrName varchar(20), @newUsrName varchar(50))
as
-- @usrName is the current user
-- @newUsrName is the new user
set nocount on
declare @uid int -- UID of the user
declare @objName varchar(50) -- Object name owned by user
declare @currObjName varchar(50) -- Checks for existing object owned by new user
declare @outStr varchar(256) -- SQL command with 'sp_changeobjectowner'
set @uid = user_id(@usrName)
declare chObjOwnerCur cursor static
for
select name from sysobjects where uid = @uid
open chObjOwnerCur
if @@cursor_rows = 0
begin
print 'Error: No objects owned by ' + @usrName
close chObjOwnerCur
deallocate chObjOwnerCur
return 1
end
fetch next from chObjOwnerCur into @objName
while @@fetch_status = 0
begin
set @currObjName = @newUsrName + "." + @objName
if (object_id(@currObjName) > 0)
print 'WARNING *** ' + @currObjName + ' already exists ***'
set @outStr = "sp_changeobjectowner '" + @usrName + "." + @objName + "','" + @newUsrName + "'"
print @outStr
print 'go'
fetch next from chObjOwnerCur into @objName
end
close chObjOwnerCur
deallocate chObjOwnerCur
set nocount off
return 0
GO
2.使用 sp_changeobjectowner 存储过程在查询分析器中生成"一系列 SQL 语句"Q
3.在查询分析器中运行2步骤中生成的"这一系列 SQL 语句"Q
相关文章推荐
- 浅析SQL SERVER一个没有公开的存储过程 (更改对象的所有者)
- 成批更改sqlserver所有者的对象
- 更改数据库所有者的对象
- 更改数据库对象的所有者
- sql server中批量更改对象的所有者
- 更改sql server数据库所有者的对象
- 更改对象的所有者
- 更改所有者的对象
- 如何更改存储过程所有者 dbo
- 成批更改数据库所有者的对象
- 基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1
- 成批更改sql server数据库所有者的对象
- 批量更改sql server数据库所有者的对象
- SQLServer更所对象所有者
- 如何更改数据库对象的所有者?(转)
- SQLServer错误:过程 sp_addextendedproperty,第 xxx 行对象无效。'dbo.xxx.xxx' 不允许有扩展属性,或对象不存在。
- 改变SQLServer 数据库所有对象的所有者成dbo
- 成批更改sql server数据库所有者的对象
- MSSQL 2000更改表和存储过程的所有者
- MSSQL 2000更改表和存储过程的所有者