DBOwner другому пользователю SQL Server - PullRequest
2 голосов
/ 07 июля 2011

Как изменить владельца всех таблиц и хранимых процедур в базе данных SQL Server 2000.

Я думаю, что "sp_changeobjectowner" может это сделать, но я не могу найти способ добиться этого.

Кто-нибудь может мне помочь?

EDIT

declare
@old_owner char(45),
@new_owner char(45)

set @old_owner = 'dbo'
set @new_owner = 'mynewuser'

select 'exec sp_changeobjectowner ''' + replace(@old_owner,' ','') + '.' + t1.name + '''' + char(44) + char(32) + '' + @new_owner + '' + char(13) 
from sysobjects t1, sysusers t2
where t1.uid = t2.uid
and t1.name not like 'sys%'
and t2.uid <> 7
and t2.name = @old_owner

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Ваш запрос вернет результирующий набор, содержащий все необходимые вам команды, но вам все равно нужно будет выполнить эти команды.

Скопируйте результаты, вставьте их в окно запроса.и попробуйте запустить их.

0 голосов
/ 07 июля 2011

Убедитесь, что новый владелец является пользователем в этой базе данных.

Возможно, вам потребуется ввести имя пользователя перед именем домена: «домен \ имя пользователя».

use Northwind 
exec sp_MSforeachtable @command1="sp_changeobjectowner '?', 'domain\username'" 

Или, возможно, попробуйте использовать курсор, если вам нужно изменить владельцев только на основании некоторых критериев:

DECLARE tables CURSOR
FOR
    SELECT [name]
      FROM sysobjects
     WHERE xtype = 'u'

OPEN tables
DECLARE @TableName NVARCHAR(512)
FETCH NEXT FROM tables INTO @TableName

WHILE @@fetch_status = 0
BEGIN

    EXEC sp_changeobjectowner @TableName, 'dbo'

    FETCH NEXT FROM tables INTO @TableName
END
CLOSE tables
DEALLOCATE tables
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...