Ошибка операции create database некоторые из перечисленных имен файлов не были созданы

Обновлено: 07.07.2024

Не удалось получить эксклюзивную блокировку базы данных 'model'. Повторите операцию позже. Создать базу данных не удалось. Некоторые из перечисленных имен файлов не удалось создать. Проверьте связанные с этим ошибки.

Тайм-аут истек. Время ожидания истекло до завершения операции или сервер не отвечает.

Это либо один из этих двух вариантов, и он выбрасывает одну и ту же строку моего кода (когда EF создает базу данных). По-видимому, в SQL Server, при создании базы данных он делает это по одному за раз и блокирует базу данных 'model' (см. здесь), таким образом, некоторые задачи, которые ждут, выбрасывают тайм-аут или эту блокировку на ошибке 'model'.

Эти тесты были сделаны на нашем экземпляре development SQL Server 2014 (12.0.4213) , и если я выполню, скажем, 100 параллельных задач, то обязательно возникнет ошибка в некоторых задачах, а иногда даже почти в половине выполненных мною задач.

BUT вот самая тревожная часть во всем этом, когда я тестирую его на другом экземпляре сервера SQL (12.0.2000) , который я установил локально на своем PC, такая ошибка не возникает и полностью завершает все задачи, которые я выполнил (даже 1000 задач параллельно!).

Решения, которые я пробовал до сих пор, но не сработали:

  • Изменил тайм - аут контекста объекта в EF на бесконечный
  • Попробовал добавить более длинный или бесконечный тайм-аут в строку подключения
  • Попробовал добавить стратегию повтора на EF и сделал ее длиннее и запускал чаще
  • В настоящее время я пытаюсь установить виртуальную машину с аналогичной средой на наш Dev-сервер (использует Windows Server 2014 R2) и протестировать конкретную версию SQL Server, чтобы попытаться увидеть, имеют ли эти версии какое-либо отношение к ней (да, я так отчаянно :))

2 ответа

Я уже некоторое время изучаю SQL Server CLR UDFs и параллелизм. Общий консенсус, по-видимому, заключается в том, что в SQL Server 2008 и более поздних версиях значение scalar CLR UDF с DataAccessKind.None должно позволять параллельное выполнение. Однако, когда я использую свое значение scalar UDF.

Поэтому я написал простой exe, который будет извлекать sql файла из папки на молнии и открывать их в SQL Server Studio. Он отлично работает, за исключением того, что иногда нужно открыть несколько файлов sql, что затем приводит к открытию нескольких экземпляров SQL Server. Как я могу сделать так.

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

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

Один из вариантов: признайте реальность необходимости SQL Server иметь эксклюзивную блокировку базы данных модели, регулируя доступ с помощью какого-то механизма синхронизации параллелизма- System.Threading.Monitor звучит примерно правильно для того, что здесь происходит, и это позволит вам контролировать то, что происходит, когда есть тайм-аут, с тайм-ау по вашему выбору . Это поможет предотвратить сценарий заблокированного типа, который может произойти на конце SQL Server, что будет объяснением текущего симптома "timeouts" (хотя единственным объяснением может быть стрессовая нагрузка).

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

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

Вероятно, у вас есть разные LockTimeoutSeconds и QueryTimeoutSeconds , установленные для разработки и локальных экземпляров для SSDT (DacFx Deploy), который развертывает базы данных.

Например, LockTimeoutSeconds используется для установки lock_timeout . Если у вас есть небольшое количество здесь, это является причиной для

Не удалось получить эксклюзивную блокировку базы данных 'model'. Повторите операцию позже. Создать базу данных не удалось. Некоторые из перечисленных имен файлов не удалось создать. Проверьте связанные с этим ошибки.

Вы можете использовать запрос ниже, чтобы определить, какой тайм-аут установлен SSDT

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

Затем найдите следующий раздел реестра

HKEY_USERS\your пользователь identifier\Microsoft\VisualStudio\your version\SQLDB\Database

и измените значения для LockTimeoutSeconds и QueryTimeoutSeconds

В настоящее время у меня есть Nifi, работающий на пограничном узле, который имеет 4 ядра. Скажем, у меня есть 20 файлов входящего потока, и я даю параллельные задачи как 10 для процессора ExecuteStreamCommand, означает ли это, что я получаю только параллельное выполнение или как параллельное, так.

Похожие вопросы:

Это не столько вопрос программирования, сколько предложения по инструментам :-) Я ищу способ предотвратить случайное выполнение скриптов на неправильном экземпляре sql server, то есть чтобы вы не.

Можно ли настроить несколько серверов баз данных (все они содержат одну и ту же базу данных) для одновременного выполнения одного запроса? Я не спрашиваю о выполнении запросов с использованием.

Я хочу указать путь, по которому файл данных и файл журнала создаются в скрипте SQL с использованием параметров. Вот что я написал: DECLARE @DataFilePath AS NVARCHAR(MAX) SET @DataFilePath =.

Я уже некоторое время изучаю SQL Server CLR UDFs и параллелизм. Общий консенсус, по-видимому, заключается в том, что в SQL Server 2008 и более поздних версиях значение scalar CLR UDF с.

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

Например, название : есть ли параллельное выполнение в sql server ? . Моя ситуация выглядит так: Таблица продуктов: ProductId Name Amount 1 one 1 Инструкция Update (эта инструкция может поместить в.

В настоящее время у меня есть Nifi, работающий на пограничном узле, который имеет 4 ядра. Скажем, у меня есть 20 файлов входящего потока, и я даю параллельные задачи как 10 для процессора.

Может ли кто-нибудь помочь с этой проблемой? Я имею в виду пример из интернета для параллельного выполнения операторов T-SQL.

Я хотел бы запросить локальный SQL Server из Azure SQL Database. Этот ответ, по-видимому, указывает на то, что я могу сделать именно это с помощью функции Elastic Database Query. Однако все, что я.

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

Содержание

Недопустимое имя объекта DOCS (или DO1DATA)

Данная ошибка обычно возникает при первичном подключении к базе данных ГТД.

Для устранения ошибки сделайте следующее:

В Альта-ГТД не работает поиск

Невозможно подключиться к серверу с удаленной машины

  • брандмауэр windows или установленный антивирус блокирует порт 1433: все отключить и проверить соединение
  • на сервере не включен протокол TCP/IP: открыть Диспетчер конфигурации SQL сервер, включить протокол, перезапустить службу SQL-сервера

При работе с программой внезапно теряется подключение к серверу

  • некорректно работает протокол "Общая память": в Диспетчере конфигурации отключить протокол Общая память, включить протокол TCP/IP и перезапустить службу SQL-севера
  • нарушается таблица маршрутизации вследствии каких-либо причин (н-р установка подключения к интернет через модем): использовать в качестве имени сервера его ip-адрес
  • ERRORLOG в папке sql сервера сильно вырос и не может переименоваться на ERRORLOG.1*, для создания нового. Тут, возможно, не хватает прав на внесение изменений в этой папке(необходимо админам проверить), либо кривая установка SQL сервера(Остановить службу SQL сервера и удалить вручную C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG, если не помогло, переустановка).

На локальной (удаленной) машине невозможно подключиться к SQL-серверу (Сервер не найден)

Возможно, установлен именованный instance SQL-сервера: указать в настройках ИМЯ_СЕРВЕРА\ИНСТАНС (обычно это SQLEXPRESS)

"Разрешение CREATE DATABASE запрещено в базе данных "master" при создании БД

У пользователя, под которым было произведено подключение к SQL-серверу, нет прав на создание новой базы данных: необходимо залогиниться под пользователем sa или другим пользователем с правами администратора

"Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы" при созднии БД

Проблема: база данных не подключена к серверу, однако сами файлы базы данных по какой то причине присутствуют в системном каталоге DATA SQL-сервера: присоедините базу данных, для чего

  • Откройте SQL Server Managment Studio, подключитесь к серверу
  • Кликните правой кнопкой мыши по Базам данных, в контекстном меню выберите пункт Присоединить
  • В появившемся окне нажмите кнопку Добавить и выберите нужный файл *.mdf, нажмите ОК
  • Нажмите ОК

"Не удаётся найти указанного поставщика"(или "Не найдена указанная процедура", или "Неизвестное имя класса",или "Разрушительный сбой")при подключении к БД

Проблема: иногда после установки автоматических обновлений Windows (или по другим неустановленным причинам) на компьютере происходит повреждение системных компонентов доступа к базам данных «Microsoft/Windows Data Access Components» (MDAC/WDAC), в частности их составляющих – «ActiveX Data Objects» (ADO) и/или «OLEDB-провайдеров».

Поскольку, начиная с Windows XP SP2 и Server 2003, данные компоненты (MDAC) считаются неотъемлемой частью операционной системы, а, начиная с Windows Vista и Server 2008, они переименованы в «Windows Data Access Components» (WDAC) и более не распространяются в виде отдельного инсталлятора, то наилучшим решением является переустановка операционной системы или восстановление ее из резервной копии (при наличии таковой) на состояние до сбоя.

Однако в виду трудоемкости данной операции можно для начала попробовать (на свой страх и риск) более «мягкие» способы решения проблемы, которые будут различаться в зависимости от установленной версии Windows:

Для старых ОС (до Windows XP SP1 включительно): Достаточно просто переустановить компоненты MDAC, скачав инсталлятор с сайта Microsoft.

Для Windows XP SP2/SP3 и Server 2003:

Вариант 2. Переустановить только компоненты MDAC, используя оригинальный дистрибутив Windows, с которого происходила установка ОС. Для этого, открыть папку C:\Windows\Inf (если ее не видно, включить показ скрытых папок/файлов в «свойствах папки»), нажать правой кнопкой мыши на файле MDAC.INF и выбрать пункт «Установить». При первом запросе «вставить диск» указать путь C:\Windows\ServicePackFiles\i386, при втором – путь к папке i386 дистрибутива Windows, с которого происходила первоначальная установка ОС. Более подробно можно прочитать в статье Microsoft.

Вариант 3 (частичное восстановление!). Скопировать с другого компьютера (где установлена такая же ОС и все работает) содержимое папок:

C:\Program Files\Common Files\System\ado C:\Program Files\Common Files\System\Ole DB

И зарегистрировать основные DLL командами (Пуск→Выполнить):

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll" regsvr32 "C:\Program Files\Common Files\System\Ole DB\oledb32.dll" regsvr32 "C:\Program Files\Common Files\System\Ole DB\sqloledb.dll"

Для Windows Vista, Sever 2008 и более поздних:

Для этих ОС изначально не существует отдельно распространяемого инсталлятора WDAC, кроме того, там применяется технология Windows File Protection (WFP), которая защищает системные файлы от любых «несанкционированных» изменений, поэтому единственный возможный способ избежать переустановки системы – это как раз понадеяться, что WFP восстановит поврежденные файлы WDAC.

Чтобы запустить сканирование системы с восстановлением поврежденных файлов надо зайти в меню «Пуск→Все программы→Стандартные», нажать правой кнопкой мыши на пункте «Командная строка» и выбрать «Запуск от имени администратора». В окне командной строки набрать команду и нажать Enter: SFC /SCANNOW

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

Кроме того, теоретически может помочь откат последних обновлений (которые привели к сбою) и/или установка последнего ServicePack для данной ОС.

  • если выше указанные действия не помогли, скопировать целиком обе папки OLEDB и ADO с другой машины с АНАЛОГИЧНОЙ операционкой и также перерегистрировать указанные dll-ки
  • установить/переустановить SQL сервер на проблемной машине
  • если все перечисленные способы не помогли, попробовать сделать откат системы, либо переустановить операционку

Locking optimistic failed: user with class identifier.

Ошибка означает, что повторно удаляется или записывается одна и та же запись в таблицу SQL. Лечится перезапуском SQL сервера.

Несоответствующий (ошибочный, и т.д.) лог-файл *.ldf

В этом случае необходимо выполнить ОДИН из скриптов. Естественно указав корректный путь к файлу базы и задав нужное имя БД. При этом сам битый файл *.ldf должен отсутствовать

База данных находится в режиме "Подозрительный"

Необходимо выполнить скрипт (заменить везде название базы, если она отличается от gtd):

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

Для обоих файлов.

MSSQLSERVER - Полный контроль

ПРАВА ВЛАДЕЛЬЦА - Полный контроль

Администраторы - Полный контроль

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

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

Я все еще не уверен, что происходит, но я работал, не запуская SSMS в качестве администратора. Ранее, когда я изменил право собственности на MSSQLSERVER на свой профиль, я получил ту же ошибку. Затем я заметил, что на вкладке "Безопасность" диалогового окна "Свойства", когда я выбрал "ПРАВИЛА ВЛАДЕЛЬЦА" в разделе "Группа или имена пользователей", перечисленные разрешения были пустыми для Разрешения и Запрета. Я нажал кнопку "Дополнительно", и с этой точки зрения все права доступа были проверены. На этот раз я щелкнул Edit и увидел, что все флажки не установлены, поэтому я установил все для Allow. Это сработало. Я не квалифицирован в безопасности Windows, поэтому я понятия не имею, что происходит, но я снова в бизнесе. И я до сих пор не понимаю, почему, когда все БД принадлежали MSSQLSERVER, одна база данных подключалась, в то время как другие два не имели, несмотря на то, что они имели одинаковый набор разрешений.

Все файлы на платформе ОС имеют права доступа. Помните, что для обеспечения оптимальной безопасности DENY всегда отменяет любые разрешенные разрешения. База данных SQL Server имеет физические файлы (.MDF,.NDF и.LDF). Эти файлы, как и любые другие файлы на сервере, имеют права доступа.

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

Я хочу восстановить базу данных из файла (задачи->восстановить->база данных; после выбора из устройства и выберите файл) через SQL server management studio.

после этого, я получаю эту ошибку:

операционная система вернула ошибку ' 5(Доступ запрещен.) при попытке 'RestoreContainer:: ValidateTargetForCreation' on 'E:Program файлыMicrosoft SQL Иметь значение mssql10 сервер.ИМЯ MSSQLSERVERMSSQL ДАННЫХДАННЫЕХХХХХХ.МДФ". Msg 3156, Уровень 16, Состояние 8, сервер XXXX, Строка 2

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

enter image description here

Restore Database dialog

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

Ну, в моем случае решение было довольно простым и прямым.

мне пришлось изменить только значение log On As значение.

действия разрешения-

  1. открыть Sql Server Configuration manager
  2. право click on SQL Server (MSSQLSERVER )
  3. на Properties

enter image description here

enter image description here

надеюсь, что это поможет вам тоже:)

Я нашел это, и это сработало для меня:

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

Я попробовал приведенный выше сценарий и получил ту же ошибку 5 (доступ запрещен). Я глубоко нырнул и обнаружил, что файл .бак должен иметь доступ к учетной записи службы SQL. Если вы не уверены, введите services.msc в меню Пуск - > Выполнить, затем проверьте учетную запись входа в службу SQL.

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

наконец, затем дать полное разрешение на него, чтобы дать полный доступ.

затем из SSMS попробуйте восстановить резервную копию.

Я получал ту же ошибку при попытке восстановить SQL 2008 R2 backup db в SQL 2012 DB. Я предполагаю, что ошибка связана с недостаточными разрешениями для размещения .MDF и. файлы ldf на диске C. Я попробовал одну простую вещь, затем мне удалось успешно восстановить ее.

в окне мастера восстановления БД перейдите на вкладку файлы, измените назначение восстановления С C: на другой диск. Затем продолжайте обычный процесс восстановления. Он обязательно получит восстанавливается успешно!

надеюсь, это вам тоже поможет. Ура :)

в моем случае мне пришлось поставить галочку в Overwrite the existing database (WITH REPLACE) под Options tab on Restore Database страница.

надеюсь, это поможет кому-то.

Decrypting

У меня была точно такая же проблема, но мое исправление было другим - моя компания шифрует все файлы на моих машинах. После расшифровки файла MSSQL не возникло никаких проблем с доступом и создана БД. Просто щелкните правой кнопкой мыши .файл bak ->свойства ->дополнительно. ->шифровать содержимое для защиты данных.

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

выяснил, что раньше там была БД с тем же именем, а файлы MDF и LDF по-прежнему физически расположены в папках данных и журналов сервера, но фактические метаданные отсутствуют в sys.база данных. учетная запись службы SQL server также не может ovewrwrite существующие файлы. Узнал также, что владелец файлов "неизвестен", мне пришлось сменить владельца на 2 файла выше, чтобы теперь он принадлежал группе администраторов локального сервера, а затем переименовал его.

затем, наконец, это сработало.

Я получил эту ошибку, потому что я проверил "перераспределить все файлы в папку" на вкладке "файлы" окна "восстановить базу данных", но путь по умолчанию не существовал на моей локальной машине. У меня были файлы ldf/mdf в другой папке, как только я изменил, что я смог восстановить.

Читайте также: