【发布时间】:2016-11-18 15:05:58
【问题描述】:
我继承了一个 SQL 2008 数据库,其中所有对象都以作为所有者的开发人员名称为前缀,即 ownername.sp_get_all_users。
我已将 dbase 恢复到 SQL Server 2016 Express Edition。
有数百个 dbase 对象,有没有办法自动将对象所有者更改为 dbo,而不是手动编辑每个对象?
我已经尝试了以下方法,但显然您不能再对自 SQL Server 2005 以来的对象进行临时更改?
SELECT * from sysobjects where uid = user_id('UseNAme')
declare @Return int
exec @Return = sp_configure 'allow updates', '1'
SELECT @Return as 'Returned Code'
GO
reconfigure WITH OVERRIDE
GO
DECLARE @Rows int, @Error int
BEGIN TRANSACTION
update sysobjects set uid = user_id('dbo') where uid = user_id('UseNAme')
SELECT @Error = @@Error, @Rows = @@RowCount
SELECT @Rows as '#Rows'
IF @Rows > 0
BEGIN
SELECT @Rows AS '#Rows'
COMMIT TRANSACTION
END
else
BEGIN
SELECT @Error AS 'Error #'
ROLLBACK TRANSACTION
END
exec sp_configure 'allow updates', '0'
reconfigure WITH OVERRIDE
go
非常感谢任何帮助。
【问题讨论】:
标签: sql-server sql-server-2016