Иногда нам нужно изменить имя базы данных, потому что исходное имя было основано на проекте, который стал нерелевантным для данных, хранящихся в базе данных, или вы дали временное имя раньше, а теперь хотите его изменить. Независимо от причин переименования базы данных, в этой статье мы предложим способы переименования базы данных, какие ошибки могут возникнуть при этом и как их исправить.
Итак, чтобы переименуйте базу данных, вам необходимо воспользоваться одним из методов, описанных ниже. Прежде всего, мы должны создать базу данных, которую нужно переименовать.
Создание базы данных:
Выберите любую базу данных в вашей системе управления SQL Server (SSMS) . Если у вас его нет, вы можете создать его, выполнив эту процедуру.
- Щелкните правой кнопкой мыши « Database » в «Обозреватель объектов» и выберите вариант «Новая база данных» .
- На левой панели появится окно
- выберите «Общие» , введите имя базы данных на правой панели и нажмите «ОК» . База данных будет создана
Существует несколько способов переименования базы данных в SQL Server. , которые подробно обсуждаются ниже вместе с версиями, поддерживаемыми любым конкретным методом. Позже мы также обсудим ошибки, возникающие при переименовании базы данных, и процедуру их исправления.
Метод 1. Использование параметра переименования SSMS для переименования базы данных SQL Server
Это самый простой способ переименовать базу данных. Для этого необходимо поступить следующим образом.
- Щелкните правой кнопкой мыши имя базы данных в обозревателе объектов.
- Выберите «переименовать ”, введите имя базы данных и нажмите
Метод 2: Использование SSMS для переименования базы данных SQL Server
Еще один простейший способ переименовать базу данных точно так же, как переименование любой папки в Windows. Чтобы сделать это, вы должны продолжать в том же духе. Щелкните базу данных, чтобы переименовать ее, как при переименовании папок Windows.
Метод 3: Использование T-SQL для переименования базы данных SQL Server
Для SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 и 2017 эта команда работает. Выполните следующий оператор.
ALTER DATABASE [test] MODIFY NAME = [test_cases]
Результатом будет «Имя базы данных ‘test_cases’ установлен ». Как показано на рисунке ниже.
Вы можете использовать Приведенная ниже команда T-SQL для изменения имени базы данных, если вы используете SQL Server 2000. В SQL 2005, 2008, 2008R2, 2012, 2014, 2016 и 2017 это все еще работает, но на каком-то этапе Microsoft утверждает, что это будет прекращено.
Метод 4. Использование отсоединения и присоединения для переименования SQL Server
Использование функции отсоединения и присоединения SQL Server может использоваться для удаления сначала базу данных и присвойте базе данных другое имя при повторном подключении базы данных. Для этого можно использовать следующие команды T-SQL
Отсоединение базы данных , выполнив следующий код:
EXEC sp_detach_db 'test', 'true'
Результат будет таким
Присоединение базы данных.
EXEC sp_attach_db @dbname = N'test ', @ filename1 = N'C: Program Files Microsoft SQL Server MSSQL12 .MSSQLSERVER MSSQL DATA test.mdf ', @ filename2 = N'C: Program Files Microsoft SQL Server MSSQL12.MSSQLSERVER MSSQL DATA test_log.ldf';
вывод будет следующим:
Использование SSMS для отключения и повторного подключения баз данных
Этого также можно достичь с помощью SSMS, выполнив следующие действия.
- Щелкните правой кнопкой мыши базу данных, выберите «задача» , затем нажмите
- Теперь нажмите «ОК»
- Теперь, чтобы присоединить базу данных, щелкните правой кнопкой мыши «Базы данных» в «Обозревателе объектов» и нажмите « Прикрепить ». Появится экран, нажмите «Добавить». Появится другое окно с именами баз данных в нем, как показано ниже, выберите «test».
- Но мы хотим добавить его как измененное имя базы данных «test_cases» , поэтому введите «test_case» в »Присоединить как “ поле. Теперь вот так. Это приведет к переименованию вашей базы данных.
Кроме того, мы обсудим ошибки, которые могут возникнуть при переименование базы данных. Вам понадобится монопольный доступ к базе данных, чтобы переименовать базу данных, что гарантирует, что база данных не имеет других подключений к базе данных. Но если это не так, это может привести к ошибкам, как показано ниже. Ошибка может возникнуть даже тогда, когда мы случайно открываем другое окно с тем же именем базы данных, которое необходимо переименовать.
Ошибки, возникающие при переименовании базы данных через SSMS и при выполнении запроса:
Эти две указанные ниже ошибки имеют два разных представления, потому что они возникают при переименовании базы данных с использованием двух разные методы. Ошибка 1 возникает при переименовании базы данных с помощью SSMS, а вторая ошибка возникает при переименовании базы данных с помощью запроса.. Обе ошибки показывают одно и то же сообщение «База данных не может быть монопольно заблокирована для выполнения операции», что означает, что ошибка возникает из-за того, что пользователю не предоставляется монопольный доступ к базе данных для переименования базы данных. Итак, чтобы переименовать базу данных, нам нужно установить базу данных в « однопользовательский режим ».
Ошибка 1: ошибка возникает при переименовании базы данных через SSMS
«Невозможно переименовать тест. (ObjectExplorer)
Дополнительная информация:
Ошибка переименования для теста базы данных (Microsoft.SqlServer.Smo)
Исключение при выполнении инструкции или пакета Transact-SQL.
(Microsoft.SqlServer.ConnectionInfo)
База данных не может быть монопольно заблокирована для выполнения операции. (Microsoft SQL Server, ошибка: 5030) »
Ошибка 2: ошибка возникает при переименовании базы данных с помощью запроса
« Msg 5030, уровень 16, состояние 2, строка 2. База данных не может быть заблокирована исключительно для выполнения операции ».
Прежде всего, мы воспроизведем вышеупомянутые сообщения об ошибках, чтобы понять, в каком сценарии они возникают и как их исправить.
- Верно -щелкните имя базы данных в «Обозревателе объектов»
- Выберите переименовать и введите имя базы данных и нажмите «ввод» , если это работает это нормально, но если это не работает и приводит к такой ошибке, как эта «Невозможно переименовать (ObjectExplorer). База данных не может быть монопольно заблокирована для выполнения операции. (Microsoft SQL Server, ошибка: 5030) », как показано на рисунке ниже, то у вас нет монопольного доступа к базе данных для переименования базы данных.
- Эта ошибка означает, что SQL Server не позволит переименовать базу данных до тех пор, пока она не находится в «однопользовательском режиме».
- Итак, вам понадобится монопольный доступ к базе данных, чтобы переименовать базу данных, чтобы понять это, откройте другое окно запроса и выберите базу данных «test»
- Теперь в первом окне попробуйте выполнить следующий код.
-
ALTER DATABASE [test] MODIFY NAME = [test_cases]
- Но это может привести к появлению такого сообщения об ошибке: «Msg 5030, уровень 16 , Состояние 2, строка 2. Невозможно заблокировать базу данных исключительно для выполнения операции ».
Решение:
Это настроит заставить базу данных откатить все ожидающие транзакции и установить ее в «однопользовательский режим» , а затем обратно в «многопользовательский режим».
- Чтобы исправить это, нам нужно закрыть все другие окна, в которых используется то же имя базы данных, или установить базу данных в «single пользовательский режим » с помощью следующих команд.
-
Изменить набор тестов базы данных single_user с немедленным откатом goEXEC sp_renamedb 'test', 'test_cases'goalter database test_cases set multi_usergo
- Результат будет примерно таким: «Откат неквалифицированных транзакций. Предполагаемое завершение отката: 0%. Выполняется откат неквалифицированных транзакций. Предполагаемое завершение отката: 100%. Установлено имя базы данных test_cases ».
Заключение:
Есть несколько способов переименовать базу данных. Если один способ не работает для вас. Вы можете перейти к другому. Следует иметь в виду, что при изменении имен баз данных этими способами просто переименовывают базу данных. «Физические файлы» по-прежнему имеют те же имена. Как видно на рисунке ниже, мы изменили имя базы данных с «test» на «test_cases» , но в физическом расположении оно осталось прежним. .
Итак, самый простой подход – использовать решение 4, если вы также хотите изменить имя файла. . Вы должны сначала изменить имена физических файлов перед повторным присоединением файлов, а затем указать переименованные файлы при повторном подключении.
Более того, помимо изменения имен баз данных, вам также потребуется чтобы проверить, есть ли в коде вашего приложения ссылки на имя базы данных. Это может быть как внутри SQL Server, так и вне SQL Server.