Перенос таблиц SQL Server в схему dbo: префикс пользователя
Быстрый ответ
Для перехода на схему dbo используйте команду ALTER SCHEMA:
ALTER SCHEMA dbo TRANSFER текущая_схема.ИмяТаблицы;
Подставьте вместо текущая_схема.ИмяТаблицы актуальные названия схемы и таблицы, чтобы перенести таблицу в схему dbo. Перед выполнением убедитесь, что у вас имеются необходимы права доступа.

Перенос схемы: Как перевести схему
Перед путешествием: Резервное копирование
Прежде чем начать перенос схем, создайте полное резервное копирование базы данных. Если что-то пойдет не так, отменить изменения будет невероятно трудно.
Проверка совместимости
Проверьте, что скрипты совместимы с вашей версией SQL Server, прежде чем запускать их – это похоже на проверку новой игры на совместимость с вашей игровой приставкой.
Пакетный перенос: Автоматизация пересылки схем
Если требуется перенести множество таблиц, используйте автоматизацию создания операторов ALTER SCHEMA через SELECT запросы. Это подобно найму компании для переезда ваших данных.
-- Время переноса таблиц!
SELECT 'ALTER SCHEMA dbo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'текущая_схема';
Не забывайте про хранимые процедуры
Если у вас есть хранимые процедуры, которые используют таблицы из переносящихся схем, необходимо обновить их – это аналог переадресации почты на новый адрес.
Выполнение: подумайте, прежде чем нажать Enter
Применяйте изменения схем в правильном контексте вашей базы данных, поскольку SQL Server не способен угадывать ваши намерения! Для пакетного выполнения команд ALTER SCHEMA используйте GO.
Всё под одной крышей: Визуализация схем
Вот простой визуальный пример: объекты базы данных – это сотрудники (👩💼👨💼), работающие в отделах (📁📁), а dbo – это главный офис (🏢).
До: 👩💼📁 → 👨💼📁
(Сотрудники в разных отделах)
После: 🏢 ← 👩💼👨💼
(Все сотрудники в главном офисе)
Перенос схем: Продвинутые сценарии
Решение конфликтов: Как управлять конфликтами имен
Дабы избежать конфликтов имен, в случае их возникновения переименуйте один из конфликтующих объектов, будь то в dbo или объекте, который переносят.
Перенос других объектов
Для передачи множества объектов используйте набор команд DECLARE и SELECT. Это будто управление грузовиком, перевозящим объекты вашей базы данных.
-- Время для переезда!
DECLARE @sql NVARCHAR(MAX) = ''
SELECT @sql += 'ALTER SCHEMA dbo TRANSFER ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + '; '
FROM sys.objects
WHERE schema_id = SCHEMA_ID('текущая_схема')
EXEC sp_executesql @sql
Операции по уборке после переноса
После переноса задумайтесь о "уборке": обновите статистику либо пересоздайте индексы для обеспечения лучшей производительности базы, а также проверьте зависимости объектов.
Лучшие практики после переноса схемы
Всегда тестируйте сначала
Перед внедрением изменений обязательно протестируйте их в тестовой среде.
Мониторинг и проверка корректности работы
После внесения всех изменений удостоверьтесь, что все функционирует правильно, внимательно отслеживая работу базы данных с новой схемой dbo.
Полезные материалы
- Права доступа (Database Engine) – Microsoft Docs
- SQL Server T-SQL Script to Change the Schema of Table – SQL Authority
- SQL Compare: Сравнение и синхронизация схем SQL Server – Redgate
- PostgreSQL – Как получить список всех баз данных и таблиц с помощью psql? – Database Administrators Stack Exchange
- Distinct clause в SQL Server – Stack Overflow