2012-01-07 09:03 by 天天, 0 visits, 收藏, 編輯
批量修改: 程序代碼EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
單個修改: 程序代碼exec sp_changeobjectowner '要改的表名','dbo'
手動修改: 直接點擊該表->設計->屬性->更改上面的所有者。該方法針對於表少的情況下。
--如果一個數據庫中(表和存儲過程)有多個用戶名,而要把它所有都改成dbo 就可以用如下的語句 Select 'sp_changeobjectowner ''' + User_Name(Uid) + '.' + name + ''',''dbo'' ' From sysobjects Where Uid Not in (User_ID('dbo')) And Type In ('U','P') --然后把查詢出來的語句拷貝出來,直接運行就表和存儲過程的對象都會改過來,但SQL SERVER要先退出來,再進去,才能看到更改后的結果
更改SQL Server表所有者的操作方法
筆者用過兩種方法:
1) 通過修改當前數據庫的對象表:sysobjects。
sysobjects存儲的是當前數據庫中的表的基本信息,其中由一個字段:uid,記錄的是表所有者的id號。如:uid為‘1’,一般表示所有者為dbo(一般是sa)。可以為表所有者更改為你所希望的表所有者的id。
需要注意的是,直接在sysobjects表中對數據進行的更新操作需要有權限允許。不然會更新不成功
2) 另外一種方式是通過sql腳本來完成的。
例如:exec sp_changeobjectowner 'cqadmin.authors', 111 將表'cqadmin.authors'的所有者改為111.