如何修改数据库表或存储过程的所有者

如何修改数据库表或存储过程的所有者,第1张

更改当前数据库所有者

--批量修改数据库对象的所有者

新建一个存储过程:changename

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[changename]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[changename]GOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS OFFGOCreate PROCEDURE dbo.changename

@OldOwner as NVARCHAR(128),--参数原所有者

@NewOwner as NVARCHAR(128)--参数新所有者ASDECLARE @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)BEGINif @Owner=@OldOwnerbeginset @OwnerName = @OldOwner + '.' + rtrim(@Name)

exec sp_changeobjectowner @OwnerName, @NewOwnerendFETCH NEXT FROM curObject INTO @Name, @OwnerENDclose curObject

deallocate curObjectGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO以SA登陆查询分析器 ,选中你要的数据库

执行存储过程

执行exec Changename '原所有者','dbo'

或exec Changename 'dbo,'数据库所有者'

修改MS SQL表用户属性的命令

可以用exec sp_changeobjectowner 'dataname.数据表','dbo' 把表或存储过程中的所有者都改成dbo<--正文内容结束--

这个其实可以这样

本地数据库新建一个数据库test

然后导入之前的备份文件MYDB.BAK;

本地数据库test备份导出为test.bak

然后就可以使用test.bak文件进行导入到其他的数据库或者空间数据库还原。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9984393.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存