Как переименовать базу данных SQL Server?

Иногда нам нужно изменить имя базы данных, потому что исходное имя было основано на проекте, который стал нерелевантным для данных, хранящихся в базе данных, или вы дали временное имя раньше, а теперь хотите его изменить. Независимо от причин переименования базы данных, в этой статье мы предложим способы переименования базы данных, какие ошибки могут возникнуть при этом и как их исправить.

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

Создание базы данных:

Выберите любую базу данных в вашей системе управления SQL Server (SSMS) . Если у вас его нет, вы можете создать его, выполнив эту процедуру.

  1. Щелкните правой кнопкой мыши « Database » в «Обозреватель объектов» и выберите вариант «Новая база данных» .
  2. На левой панели появится окно
  3. выберите «Общие» , введите имя базы данных на правой панели и нажмите «ОК» . База данных будет создана

Существует несколько способов переименования базы данных в SQL Server. , которые подробно обсуждаются ниже вместе с версиями, поддерживаемыми любым конкретным методом. Позже мы также обсудим ошибки, возникающие при переименовании базы данных, и процедуру их исправления.

Метод 1. Использование параметра переименования SSMS для переименования базы данных SQL Server

Это самый простой способ переименовать базу данных. Для этого необходимо поступить следующим образом.

  1. Щелкните правой кнопкой мыши имя базы данных в обозревателе объектов.
  2. Выберите «переименовать ”, введите имя базы данных и нажмите

Метод 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, выполнив следующие действия.

  1. Щелкните правой кнопкой мыши базу данных, выберите «задача» , затем нажмите
  2. Теперь нажмите «ОК»
  3. Теперь, чтобы присоединить базу данных, щелкните правой кнопкой мыши «Базы данных» в «Обозревателе объектов» и нажмите « Прикрепить ». Появится экран, нажмите «Добавить». Появится другое окно с именами баз данных в нем, как показано ниже, выберите «test».
  4. Но мы хотим добавить его как измененное имя базы данных «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. База данных не может быть заблокирована исключительно для выполнения операции ».

Прежде всего, мы воспроизведем вышеупомянутые сообщения об ошибках, чтобы понять, в каком сценарии они возникают и как их исправить.

  1. Верно -щелкните имя базы данных в «Обозревателе объектов»
  2. Выберите переименовать и введите имя базы данных и нажмите «ввод» , если это работает это нормально, но если это не работает и приводит к такой ошибке, как эта «Невозможно переименовать (ObjectExplorer). База данных не может быть монопольно заблокирована для выполнения операции. (Microsoft SQL Server, ошибка: 5030) », как показано на рисунке ниже, то у вас нет монопольного доступа к базе данных для переименования базы данных.
  3. Эта ошибка означает, что SQL Server не позволит переименовать базу данных до тех пор, пока она не находится в «однопользовательском режиме».
  4. Итак, вам понадобится монопольный доступ к базе данных, чтобы переименовать базу данных, чтобы понять это, откройте другое окно запроса и выберите базу данных «test»
  5. Теперь в первом окне попробуйте выполнить следующий код.
  6.  ALTER DATABASE [test] MODIFY NAME = [test_cases] 
  7. Но это может привести к появлению такого сообщения об ошибке: «Msg 5030, уровень 16 , Состояние 2, строка 2. Невозможно заблокировать базу данных исключительно для выполнения операции ».

Решение:

Это настроит заставить базу данных откатить все ожидающие транзакции и установить ее в «однопользовательский режим» , а затем обратно в «многопользовательский режим».

  1. Чтобы исправить это, нам нужно закрыть все другие окна, в которых используется то же имя базы данных, или установить базу данных в «single пользовательский режим » с помощью следующих команд.
  2.  Изменить набор тестов базы данных single_user с немедленным откатом goEXEC sp_renamedb 'test', 'test_cases'goalter database test_cases set multi_usergo 
  3. Результат будет примерно таким: «Откат неквалифицированных транзакций. Предполагаемое завершение отката: 0%. Выполняется откат неквалифицированных транзакций. Предполагаемое завершение отката: 100%. Установлено имя базы данных test_cases ».

Заключение:

Есть несколько способов переименовать базу данных. Если один способ не работает для вас. Вы можете перейти к другому. Следует иметь в виду, что при изменении имен баз данных этими способами просто переименовывают базу данных. «Физические файлы» по-прежнему имеют те же имена. Как видно на рисунке ниже, мы изменили имя базы данных с «test» на «test_cases» , но в физическом расположении оно осталось прежним. .

Итак, самый простой подход — использовать решение 4, если вы также хотите изменить имя файла. . Вы должны сначала изменить имена физических файлов перед повторным присоединением файлов, а затем указать переименованные файлы при повторном подключении.

Более того, помимо изменения имен баз данных, вам также потребуется чтобы проверить, есть ли в коде вашего приложения ссылки на имя базы данных. Это может быть как внутри SQL Server, так и вне SQL Server.

Оцените статью
techscreen.ru
Добавить комментарий