批量更改資料庫表的所有者

2021-04-12 16:13:48 字數 743 閱讀 3701

在客戶的資料庫中執行我們的程式時,有時會出現下面錯誤資訊。檢視資料庫表卻發現此表仍然存在,但注意到其所有者不是通常的dbo,而是變成了其它,比如bcs。

我們的程式要求資料庫表的所有者為dbo,否則會出錯。那麼如何將資料庫中這些所有者不為dbo的表,變成所有者為dbo呢?執行以下語句可以很方便地批量更改資料庫表的所有者。

用法:在以下sql中,用錯誤的所有者替換dbo_old,用正確的所有者替換dbo_new。比如要解決上面的情況,替換後為:@oldowner = 'bcs'  , @newowner = 'dbo'  。

---------------------

declare @oldowner sysname, @newowner sysname, @sql varchar(1000)

select  @oldowner = 'dbo_old'  , @newowner = 'dbo_new'  , 

@sql = '  if exists (select null from information_schema.tables  where      quotename(table_schema)+''.''+quotename(table_name) = ''?''      and table_schema = ''' + @oldowner + '''  )  execute sp_changeobjectowner ''?'', ''' + @newowner + ''''

execute sp_msforeachtable @sql 

更改資料庫物件所有者

declare cur cursor for select name from sysobjects where uid user id net4646608 and xtype u or xtype p declare name sysname declare sqlstr varchar 500...

更改資料庫所有者的物件

功能說明 成批更改資料庫所有者的物件 declare name as nvarchar 128 declare owner as nvarchar 128 declare ownername as nvarchar 128 declare curobject cursor for select na...

更改資料庫物件的所有者

更改當前資料庫中物件的所有者。語法sp changeobjectowner objname object newowner owner 引數 objname object 當前資料庫中現有的表 檢視或儲存過程的名稱。object 的資料型別為nvarchar 517 沒有預設值。object 可用現...