SQL 2005 не может удалить пользователя - PullRequest
2 голосов
/ 29 мая 2009

Я восстановил базу данных из резервной копии на новый сервер и не могу удалить старую схему из базы данных. Я создал НОВОГО пользователя для этой базы данных. Пользователь NEW назван по-другому (чтобы было понятнее для других разработчиков), поэтому я не использую эту схему. Мне удалось наконец удалить пользователя, но схема не исчезнет.

Я получаю сообщение об ошибке: «Невозможно удалить схему», поскольку на нее ссылается объект «

».

Запуск этого скрипта:

select * from sys.objects where schema_id = 5

... показывает все объекты, которыми владеет эта схема.

Моя проблема в том, что я не могу найти способ изменить владельца этих объектов. Должен быть способ? Спасибо всем

1 Ответ

5 голосов
/ 29 мая 2009

Синтаксис для перемещения объекта Thing из схемы Source в схему. Destination:

ALTER SCHEMA Destination TRANSFER Source.Thing

Вот SQL для генерации скрипта для передачи всех объектов в схему dbo:

SELECT 'ALTER SCHEMA dbo TRANSFER ' + SCHEMA_NAME(schema_id) + '.' + name
FROM sys.tables
WHERE schema_id != SCHEMA_ID('dbo');

Чтобы просто передать одну конкретную схему:

SELECT 'ALTER SCHEMA NewSchema TRANSFER ' + SCHEMA_NAME(schema_id) + '.' + name
FROM sys.tables
WHERE schema_name(schema_id) = 'OldSchema'
...