Не удалось получить монопольный доступ так как база данных используется sql: Решено — перевести БД в монопольный режим

Содержание

KB3164104-не удается выполнить DBCC CHECKDB, когда файлы базы данных находятся в хранилище Azure Premium в SQL Server 2014

SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Enterprise Core SQL Server 2014 Express SQL Server 2014 Standard SQL Server 2014 Web Еще…Меньше

Проблемы


Предположим, что вы сохраняете файлы базы данных в хранилище Azure Premium. При запуске DBCC CHECKDB в базе данных SQL Server 2014 могут появляться сообщения об ошибках, аналогичные указанным ниже.

Сообщение 1823, уровень 16, состояние 2, не удается создать моментальный снимок базы данных строки 3A, так как он не запускается. Сообщение 1823, уровень 16, состояние 8, моментальный снимок базы данных Line 3A не может быть создан, так как он не запускается. Сообщение 5120, уровень 16, состояние 147, строка 3Unable, чтобы открыть физический файл blob_storage_URL_path. Ошибка операционной системы 24: «24 (программа выдала команду, но ее длина неверна)». Сообщение 7928, уровень 16, состояние 1, не удалось создать моментальный снимок 3The базы данных строк для проверки по сети. Либо причина указана в предыдущей ошибке, либо один из базовых томов не поддерживает разреженные файлы или дополнительные потоки. Попытка получить монопольный доступ для проверки автономной работы. Сообщение 5030, уровень 16, состояние 12, строка 3The не может быть монопольно заблокирована для выполнения операции. Сообщение 7926, уровень 16, состояние 1, инструкция Line 3Check прервана. Не удалось проверить базу данных, так как не удалось создать моментальный снимок базы данных, и не удалось заблокировать базу данных или таблицу. В этой статье приведены подробные сведения о том, когда это поведение ожидается и какие временные решения существуют. Дополнительные сведения можно также найти в предыдущих сообщениях об ошибках.



Решение


Эта проблема впервые устранена в следующем накопительном обновлении SQL Server:


Накопительное обновление 8 для SQL server 2014 с пакетом обновления 1
(SP1), Накопительное обновление 2 для SQL Server 2014 SP2


Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.


Последнее накопительное обновление для SQL Server 2014 с пакетом обновления 1 (SP2)

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».

Ссылки


Поддержка хранения файлов данных в хранилище Azure. Создание базы данных SQL Server 2014 непосредственно в хранилище BLOB-объектов Azure с помощью SQLXIознакомьтесь с терминологией , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.


Отсоединение и присоединение баз данных в Microsoft SQL Server (Detach и Attach) | Info-Comp.ru

В Microsoft SQL Server есть возможность отсоединять и присоединять базы данных, и сегодня мы с Вами поговорим о том, в каких случаях эта возможность будет нам полезна и, конечно же, рассмотрим примеры реализации данной возможности, причем разными способами.

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

Первое — это, конечно же, для перемещения базы на другой экземпляр SQL Server, он может располагаться как на этом же компьютере, так и на другом (или просто для перемещения базы данных на другой физический жесткий диск, например, свободное место на диске заканчивается).

Второе — это тогда, когда например сервер вышел из строя, но файлы базы данных и журналов транзакций в порядке и необходимо эти файлы восстановить, т.е. присоединить к новому экземпляру SQL Server на новом сервере.

Вы можете найти и другое применение данной возможности, но перечисленные выше ситуации, особенно первая, самые распространённые.

Заметка! Обзор инструментов для работы с Microsoft SQL Server.

Содержание

  1. Отсоединение баз данных в Microsoft SQL Server
  2. Отсоединение базы данных с помощью sp_detach_db
  3. Отсоединение базы данных с помощью Management Studio
  4. Присоединение баз данных в MS SQL Server
  5. Присоединение базы данных с помощью CREATE DATABASE
  6. Присоединение базы данных с помощью Management Studio
  7. Присоединение базы данных с помощью процедуры sp_attach_db

Отсоединение баз данных в Microsoft SQL Server

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

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

Отсоединить базу данных можно разными способами, например, на языке T-SQL, т.е. используя процедуру sp_detach_db или также можно воспользоваться графическим инструментом, т.е. SQL Server Management Studio. Мы с Вами разберем оба способа.

Примечание! Все примеры ниже будут рассмотрены на Microsoft SQL Server 2008 R2.

Отсоединение базы данных с помощью sp_detach_db

sp_detach_db – системная хранимая процедура, которая отсоединяет базу данных от экземпляра SQL сервера, а также может выполнить инструкцию UPDATE STATISTICS для всех таблиц перед отключением.

В качестве первого параметра она принимает имя базы данных, в качестве второго TRUE/FALSE (в виде текста), по умолчанию TRUE, т.е. это означает — не выполнять инструкцию UPDATE STATISTICS. Еще есть и третий параметр, который указывает, удалять или не удалять полнотекстовый индексный файл, связанный с отключаемой базой данных, по умолчанию TRUE, т.е. это означает — что метаданные, связанные с полнотекстовыми данными, сохраняются. Но этот параметр в новых версиях будет удален, честно говоря, не проверял на последних версиях, но разработчики SQL сервера не рекомендуют использовать этот параметр, уже начиная с версии 2008 R2.

Синтаксис:

 
   sp_detach_db  @dbname =  'database_name', 
                         @skipchecks =  'skipchecks',
                         @keepfulltextindexfile =  'KeepFulltextIndexFile'


Пример. Допустим, у нас есть база данных TestBase, и возникла необходимость ее отсоединить, для этого мы пишем следующую SQL инструкцию:

 
   EXEC sp_detach_db @dbname = 'TestBase'


Отсоединение базы данных с помощью Management Studio

Для того чтобы отсоединить базу данных необходимо в обозревателе объектов раскрыть список «Базы данных» и по нужной базе щелкнуть правой кнопкой мыши и нажать «Задачи ->Отсоединить»

И для того чтобы получить точно такой же результат, как и в примере выше жмем сразу «ОК»


Примечание! Как в первом примере, так и во втором не забываем про монопольный доступ, его можно получить, например, установив параметр базы данных «Ограничение доступа» в SINGLE_USER.

Присоединение баз данных в MS SQL Server

Для того чтобы присоединить базу данных, необходимы соответственно файлы этой базы данных, т.е. mdf, ldf. В случаях если журналы транзакций, т.е. файлы ldf не указаны, то они будут перестроены, но только в том случае если присоединяемая база данных доступна как для чтения, так и для записи. Если база данных была закрыта аварийно, при этом в ней работали пользователи и были открытые транзакции, то файлы журнала транзакций лучше указывать. Присоединять базы данных, полученные из неизвестных источников, не рекомендуется.

Также как и при отсоединении присоединить базу данных можно несколькими способами, мы рассмотри три: это с помощью конструкции CREATE DATABASE, с помощью Management Studio, а также рассмотрим пример присоединения базы данных с использованием процедуры sp_attach_db.

Примечание! В документации указано, что возможность присоединять базы данных с помощью процедуры sp_attach_db в будущих версиях SQL сервера будет удалена, поэтому ее не рекомендуют использовать в новых разработках, в SQL Server 2008 R2 эта возможность ещё есть.

Присоединение базы данных с помощью CREATE DATABASE

Конструкция CREATE DATABASE используется не только для создания новой базы данных, но и для присоединения базы данных, которую ранее отсоединили.

Давайте с помощью конструкции CREATE DATABASE присоединим обратно базу TestBase, которую выше мы отсоединили.

 
   CREATE DATABASE [TestBase] ON 
                (FILENAME = N'C:\TestBase.mdf'),
                (FILENAME = N'C:\TestBase_log.ldf')
   FOR ATTACH
   GO


Как Вы понимаете C:\TestBase.mdf и C:\TestBase_log.ldf — это пути к файлам базы данных.

Присоединение базы данных с помощью Management Studio

В Management Studio присоединение делается следующим образом, в обозревателе объектов щёлкните правой кнопкой мыши по пункту «Базы данных» и нажмите «Присоединить»

Затем через кнопку «Добавить» выбираем файл базы данных (MDF-файл) и жмем «ОК».

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

Присоединение базы данных с помощью процедуры sp_attach_db

sp_attach_db – системная хранимая процедура, которая присоединяет базы данных к экземпляру SQL сервера. Как было уже сказано выше, ее не рекомендуют использовать в новых разработках. Первым параметром передается имя базы данных присоединяемой к серверу, оно должно быть уникальным. Вторым и далее (до 16) передаются пути к файлам базы данных.

Синтаксис:

 
   sp_attach_db @dbname = 'dbname',
                       @filename1 = 'filename_n', 
                       [...16] 


Пример:

 
   EXEC sp_attach_db @dbname = 'TestBase',
                                @filename1 = N'C:\TestBase.mdf', 
                                @filename2 = N'C:\TestBase_log.ldf'


Примечание! В случае если Вам необходимо присоединить более 16 файлов, то нужно использовать CREATE DATABASE database_name FOR ATTACH.

Заметка! Если Вас интересует SQL и T-SQL, рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать с использованием языка T-SQL в Microsoft SQL Server.

На этом у меня все, надеюсь, материал был Вам полезен, удачи!

Ошибка SQL Server во время восстановления базы данных: «Не удалось получить монопольный доступ, поскольку база данных используется» | by Mert Ilis

Ошибка SQL Server во время восстановления базы данных: «Не удалось получить монопольный доступ, поскольку база данных используется» | Мерт Илис | Medium

1 мин чтения

·

19 ноября 2014 г.

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

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

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

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

Чтобы разорвать соединение, выполните следующие две команды:

 alter database   your_db_name   установить в автономном режиме с откатом немедленной базы данных   your_db_name   установить в сети 

После этого; вы можете восстановить базу данных, как обычно…

Первоначально опубликовано по адресу http://www.weboideas.com 19 ноября 2014 г.

Sql Server

Илис

38 подписчиков

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

Еще от Mert Ilis

Mert Ilis

Как исправить ошибку Параметры групповой политики для параметров запуска BitLocker конфликтуют и не могут…

ОШИБКА: Произошла ошибка (код 0x8 031005b): Групповая политика настройки параметров запуска BitLocker конфликтуют и не могут быть применены…

·2 мин чтения·16 ноября 2021 г.

Mert Ilis

Ошибка SQL Server Группа пользователя или роль уже существует в текущей базе данных

На прошлой неделе мы перенесли наш SQL Server на новый сервер и новую версию SQL Server (2012). Во время миграции мы создали пользователей для входа в систему в…

2 min read · 23 декабря 2014 г.

Mert Ilis

Как настроить беспарольное SSH-подключение из Windows в Linux

Вот как вы можете подключиться ( ssh ) с вашего компьютера с Windows 10 на ваш сервер Linux (CentOS в моем случае) без ввода пароля SSH.

·чтение через 2 мин·9 окт., 2020

Mert Ilis

Как создать сертификат сервера с конфигурацией с помощью OpenSSL

В этом посте я шаг за шагом создам сертификат сервера, включая такие конфигурации, как альтернативные имена субъектов и идентификаторы ключей.

·3 мин чтения·3 декабря 2020 г.

Просмотреть все от Mert Ilis

Рекомендовано на Medium

HKN MZ

в

В сторону Dev

90 004

SQL-упражнения с вопросами и решениями

Привет всем, в этой статье мы сделаем несколько упражнений Sql, T-Sql.

· 8 минут чтения · 29 декабря 2022 г.

HKN MZ

in

Towards Dev

Самые полезные запросы для Sql Server

9 0004

В этой статье я пытаюсь добавить почти все полезные sql-запросы в получить быстрый результат. И эта статья будет обновляться время от времени.

·7 минут чтения·13 ноября 2022 г.

Абделила МУЛИДА

6 методов оптимизации запросов SQL!!

В этом блоге представлены методы оптимизации запросов для разработки хорошей логики и достижения максимальной производительности базы данных. Логика запроса…

·3 минуты чтения·25 января

Никола Илич

Потоки данных Power BI — все, что вам нужно знать!

Что такое потоки данных и как они вписываются в общую картину моделирования данных Power BI? Эта статья развеет мифы о Силе…

·10 минут чтения·25 января

Зак Куинн

в

Конвейер: ваш ресурс по проектированию данных

0004

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

·9 минут чтения·5 декабря 2022 г.

Луис Оливейра

в

Кодирование для повышения уровня

Как запустить PostgreSQL и pgAdmin с Docker 9

См. дополнительные рекомендации

Конфиденциальность

Преобразование текста в речь

восстановление сервера sql из . bak Не удалось получить монопольный доступ

спросил

Изменено
3 года, 3 месяца назад

Просмотрено
49 тысяч раз

Я пытаюсь восстановить свой sql с помощью файла bak

Я получаю сообщение об ошибке

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

Я пытался

 USE [master]
ИЗМЕНИТЬ БАЗУ ДАННЫХ myDB
УСТАНОВИТЬ SINGLE_USER С НЕМЕДЛЕННЫМ ОТКАТОМ;
 

и запустите запрос

 USE [master] RESTORE DATABASE myDB
   FROM DISK = 'C:\MyDatabase. bak' WITH FILE = 1, NOUNLOAD, STATS = 10
 

Я также пытался использовать мастер восстановления с тем же результатом.

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

  • sql
  • sql-сервер
  • резервная копия

4

Метод 1

 объявить @sql как varchar(20), @spid как int
    выберите @spid = min(spid) из master..sysprocesses, где dbid = db_id('') и spid != @@spid
    в то время как (@spid не равен нулю)
    начинать
    print 'Процесс уничтожения' + cast(@spid as varchar) + '...'
    set @sql = 'kill' + cast(@spid as varchar)
исполняемый (@sql)
выбирать
    @spid = мин(spid)
от
    мастер.. системные процессы
где
    dbid = db_id('<имя_базы_данных>')
    и спид != @@спид
 конец
 напечатать 'Процесс завершен...'
 

Способ 2

 изменить базу данных имя_базы_данных
  установить автономный режим с немедленным откатом
  изменить базу данных имя_базы_данных
  установить онлайн
 

перейти

1

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

  1. Перейдите на вкладку «Параметры» в окне «Восстановление базы данных»
  2. Проверить (перезаписать существующую базу данных (С ЗАМЕНОЙ))
  3. Проверить (закрыть существующие соединения с целевой базой данных)
  4. Затем нажмите OK

Восстановление базы данных начинается…

1

Любой, у кого были проблемы, перечисленные выше, и ни один из советов не работает. Просто отключите резервное копирование Taillog в разделе «Параметры». сама исходная база данных (даже если ваш источник для восстановления — это просто файл). Поэтому, если исходная база данных используется (что обычно происходит, если вы делаете копию рабочей БД), восстановление завершается ошибкой.

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