Перенос таблиц SQL Server в схему dbo: префикс пользователя

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для перехода на схему dbo используйте команду ALTER SCHEMA:

SQL
Скопировать код
ALTER SCHEMA dbo TRANSFER текущая_схема.ИмяТаблицы;

Подставьте вместо текущая_схема.ИмяТаблицы актуальные названия схемы и таблицы, чтобы перенести таблицу в схему dbo. Перед выполнением убедитесь, что у вас имеются необходимы права доступа.

Кинга Идем в IT: пошаговый план для смены профессии

Перенос схемы: Как перевести схему

Перед путешествием: Резервное копирование

Прежде чем начать перенос схем, создайте полное резервное копирование базы данных. Если что-то пойдет не так, отменить изменения будет невероятно трудно.

Проверка совместимости

Проверьте, что скрипты совместимы с вашей версией SQL Server, прежде чем запускать их – это похоже на проверку новой игры на совместимость с вашей игровой приставкой.

Пакетный перенос: Автоматизация пересылки схем

Если требуется перенести множество таблиц, используйте автоматизацию создания операторов ALTER SCHEMA через SELECT запросы. Это подобно найму компании для переезда ваших данных.

SQL
Скопировать код
-- Время переноса таблиц!

SELECT 'ALTER SCHEMA dbo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'текущая_схема';

Не забывайте про хранимые процедуры

Если у вас есть хранимые процедуры, которые используют таблицы из переносящихся схем, необходимо обновить их – это аналог переадресации почты на новый адрес.

Выполнение: подумайте, прежде чем нажать Enter

Применяйте изменения схем в правильном контексте вашей базы данных, поскольку SQL Server не способен угадывать ваши намерения! Для пакетного выполнения команд ALTER SCHEMA используйте GO.

Всё под одной крышей: Визуализация схем

Вот простой визуальный пример: объекты базы данных – это сотрудники (👩‍💼👨‍💼), работающие в отделах (📁📁), а dbo – это главный офис (🏢).

Markdown
Скопировать код
До:         👩‍💼📁 → 👨‍💼📁
            (Сотрудники в разных отделах)
После:      🏢 ← 👩‍💼👨‍💼
            (Все сотрудники в главном офисе)

Перенос схем: Продвинутые сценарии

Решение конфликтов: Как управлять конфликтами имен

Дабы избежать конфликтов имен, в случае их возникновения переименуйте один из конфликтующих объектов, будь то в dbo или объекте, который переносят.

Перенос других объектов

Для передачи множества объектов используйте набор команд DECLARE и SELECT. Это будто управление грузовиком, перевозящим объекты вашей базы данных.

SQL
Скопировать код
-- Время для переезда!

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.

Полезные материалы

  1. Права доступа (Database Engine) – Microsoft Docs
  2. SQL Server T-SQL Script to Change the Schema of Table – SQL Authority
  3. SQL Compare: Сравнение и синхронизация схем SQL Server – Redgate
  4. PostgreSQL – Как получить список всех баз данных и таблиц с помощью psql? – Database Administrators Stack Exchange
  5. Distinct clause в SQL Server – Stack Overflow