Ошибка операционной системы create database

Всем привет.
Просьба помочь.

Созадал БД:

CREATE DATABASE NorthPole ON PRIMARY (

  NAME = NorthPoleDB,

  FILENAME = 'D:NorthPoleDB.mdf'
)

Создал там таблицу и записал туда данные:

use NorthPole;
CREATE TABLE pol(id int);
INSERT INTO pol VALUES(1),(6),(5);
SELECT * FROM pol;

Теперь, допустим, мне нужно создать новую БД, скопировав существующую (без варианта перейменовки).

use current_db
CREATE DATABASE SomeDB
ON (FILENAME = 'D:NorthPoleDB.mdf')
FOR ATTACH

Ошибка

Сообщение 5120, уровень 16, состояние 101, строка 20
Не удалось открыть физический файл «D:NorthPoleDB.mdf». Ошибка операционной системы 32: «32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)».

Студворк — интернет-сервис помощи студентам

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE DATABASE ShopDB
ON Primary
(
    NAME='ShopDB',
    FILENAME='C:UsersUserDocumentsSQL Server Management StudioProjectsShopDB.mdf',
    SIZE=10MB,
    MAXSIZE=100MB,
    FILEGROWTH=10MB
)
LOG ON 
(
    NAME='LogShopDB',
    FILENAME='C:UsersUserDocumentsSQL Server Management StudioProjectsShopDB.ldf',
    SIZE=5MB,
    MAXSIZE=50MB,
    FILEGROWTH=5MB
)
Collate Cyrillic_General_CI_AS

выдает такую ошибку
Сообщение 5133, уровень 16, состояние 1, строка 2
Поиск каталога для файла «C:UsersUserDocumentsSQL Server Management StudioProjectsShopDB.mdf» не удался, вызвав ошибку операционной системы 5(Отказано в доступе.).
Сообщение 1802, уровень 16, состояние 1, строка 2
Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы. Проверьте связанные ошибки.

как исправить?

I’m trying to execute the following script in SQL Server Management Studio:

USE [master]
GO

CREATE DATABASE [test1] ON PRIMARY (
  NAME = N'test1', 
  FILENAME =
    N'C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLDATAtest1.mdf',
  SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
LOG ON (
  NAME = N'test1_log',
  FILENAME =
    N'C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLDATAtest1_log.ldf',
  SIZE = 164672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

But I’m getting the error:

Msg 5123, Level 16, State 1, Line 2
CREATE FILE encountered operating system error 5 (Access is denied.)
while attempting to open or create the physical file
‘C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLDATAtest1.mdf’.

Msg 1802, Level 16, State 4, Line 2
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

Already have all role permissions for my user, any ideas on what’s wrong?

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

Содержание

  • 1 Недопустимое имя объекта DOCS (или DO1DATA)
  • 2 В Альта-ГТД не работает поиск
  • 3 Невозможно подключиться к серверу с удаленной машины
  • 4 При работе с программой внезапно теряется подключение к серверу
  • 5 На локальной (удаленной) машине невозможно подключиться к SQL-серверу (Сервер не найден)
  • 6 «Разрешение CREATE DATABASE запрещено в базе данных «master» при создании БД
  • 7 «Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы» при созднии БД
  • 8 «Не удаётся найти указанного поставщика»(или «Не найдена указанная процедура», или «Неизвестное имя класса»,или «Разрушительный сбой»)при подключении к БД
  • 9 Locking optimistic failed: user with class identifier…
  • 10 Несоответствующий (ошибочный, и т.д.) лог-файл *.ldf
  • 11 База данных находится в режиме «Подозрительный»

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

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

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

  • Откройте SQL Server Managment Studio, подключитесь к серверу
  • Откройте файл (Файл — Открыть — Файл) DOCS.SQL (для DO1DATA — DO1DATA.SQL), который находится в папке UTILS с установленной программой ГТД (при установке по умолчанию это C:Alta)
  • Выберите из списка (рядом с кнопкой Выполнить) базу данных, в которой произошла ошибка
  • Нажмите кнопку Выполнить

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

Возможные проблемы:

  • не установлена служба полнотекстового поиска: переустановить SQL сервер, при переустановке не забыть поставить галку на «Компонент Full-Text Search»
  • не запущена служба полнотекстового поиска: запустить службу, в параметрах запуска установить Авто
  • служба полнотекстового поиска не запускается с ошибкой «Интерфейс не поддерживается», либо такая ошибка выскакивает при поиске: переустановить SQL-сервер
  • при поиске выдается сообщение об ошибке «Служба не запущена», хотя она запущена, либо какая то еще ошибка: запустить скрипт FullText.sql (если каталог уже существует, будет выдана ошибка, но это не страшно), затем ConvertFtcLng.sql (выдается сообщение: «Внимание! Таблица или индексированное представление «dbo.Docs» имеет столбцы полнотекстового индекса… » — это нормально)

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

Возможные проблемы:

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

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

Возможные проблемы:

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

На локальной (удаленной) машине невозможно подключиться к 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:

Вариант 1 (только для XP). Воспользоваться вышеупомянутым инсталлятором, однако перед его запуском зайти в свойства файла MDAC_TYP.EXE и включить режим совместимости с Windows 2000. Это позволит избежать сообщения о «несовместимости с данной версией Windows», но по сути будут установлены ровно те же компоненты, что идут в составе Windows XP SP2/SP3.

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

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

C:Program FilesCommon FilesSystemado
C:Program FilesCommon FilesSystemOle DB

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

regsvr32 «C:Program FilesCommon FilesSystemadomsado15.dll»
regsvr32 «C:Program FilesCommon FilesSystemOle DBoledb32.dll»
regsvr32 «C:Program FilesCommon FilesSystemOle DBsqloledb.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 должен отсутствовать

  • Первый скрипт:
USE [master]
GO
EXEC sp_attach_single_file_db @dbname='gtd', @physname=N'C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAgtd.mdf'
GO
  • Второй скрипт:
USE [master]
GO
CREATE DATABASE gtd ON (FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAgtd.mdf')
FOR ATTACH_REBUILD_LOG
GO

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

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

alter database gtd set emergency
alter database gtd set single_user
go
DBCC CHECKDB (gtd, REPAIR_ALLOW_DATA_LOSS) with NO_INFOMSGS
go
alter database gtd set multi_user
go

Пересказ статьи Chad Callihan. Attach Database Without Transaction Log File

Что если вы перемещаете базу данных на новый сервер, отсоединяя (detach) и снова присоединяя файлы базы данных, и кто-то (конечно, не вы) потерял файл журнала? Что если требуется перевести старую базу данных в режим онлайн, но к вам пришел человек, у которого имеется только mdf файл? Можно все же присоединить базу данных в подобных случаях? Давайте это выясним.

Сейчас у нас имеются файлы mdf и ldf для базы данных ExampleDB.

Чтобы перейти к нашему тесту, давайте отсоединим базу данных в SSMS:

USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'ExampleDB'
GO

Теперь мы можем выбрать наш файл ExampleDB_log.ldf в проводнике Windows и удалить его. Останется только mdf.

Давайте вернемся в SSMS, выполним щелчок правой кнопкой на папке Databases в браузере объектов и выберем “Attach…”:

Щелкнем кнопку Add в районе середины окна и выберем наш файл ExampleDB.mdf:

Присоединить здесь

Тут становится интересно. В нижней половине окна мы можем увидеть добавление файла ExampleDB_log.ldf. Можно отрегулировать ширину столбца, чтобы увидеть сообщение:

Звучит просто. Давайте нажмем ОК и посмотрим, сделает ли SQL Server то, что обещает:

Нет. Щелкнем ОК, чтобы вернуться к окну присоединения. Прокрутим вправо ниже “Databases to attach” и щелкнем Message, чтобы увидеть подробную информацию:

Щелкнем еще раз ОК, чтобы вернуться к окну Attach. Давайте заглянем под капот. Чтобы выяснить, что пытается выполнить SQL Server, щелкнем “Script” и выберем Script Action to New Query Window (вывести действие скрипта в новое окно запроса):

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

USE [master]
GO
CREATE DATABASE [ExampleDB] ON
( FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB.mdf' ),
( FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB_log.ldf' )
FOR ATTACH
GO
Msg 5120, Level 16, State 101, Line 3
Невозможно открыть физический файл “C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB_log.ldf”. Ошибка операционной системы 2: “2 (Система не может найти указанный файл.)”.
Msg 1802, Level 16, State 7, Line 3
Операция CREATE DATABASE не удалась. Некоторые файлы с перечисленными именами не были созданы. Проверьте связанные ошибки.

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

USE [master]
GO
CREATE DATABASE [ExampleDB] ON
( FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB.mdf' )
FOR ATTACH
GO

Сбой активации файла. Возможно, имя физического файла “C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB_log.ldf” указано неверно.
Был создан новый файл журнала “C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATAExampleDB_log.ldf”.

База данных присоединена успешно, и мы снова в деле. Вместо изменения скрипта мы могли также выполнить это с помощью GUI, удалив ldf ниже деталей базы данных и щелкнув ОК:

Вводящее в заблуждение сообщение?

SQL Server’у просто следовало бы сказать «Не найден» вместо сообщения «Будет создан новый пустой файл журнала». Процесс удаления строки файла журнала и присоединения также сработал. Я еще не уверен, что сообщение «Будет создан новый пустой файл журнала» является вводящим в заблуждение багом, и нет ли другого трюка, чтобы это сработало. Сообщите мне, если вы получили другой результат.

Понравилась статья? Поделить с друзьями:
  • Ошибка операционной системы 67 не найдено сетевое имя
  • Ошибка операционной системы 5 отказано в доступе bak
  • Ошибка операционной системы 5 отказано в доступе backup database
  • Ошибка операционной системы 2 не удается найти указанный файл
  • Ошибка операционная система не соответствует