Перенос таблиц 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