Ошибка операции create database

В данной статье перечислены наиболее часто возникающие ошибки при работе программ в 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 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:

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

Вариант 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 должен отсутствовать

  • Первый скрипт:
USE [master]
GO
EXEC sp_attach_single_file_db @dbname='gtd', @physname=N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\gtd.mdf'
GO
  • Второй скрипт:
USE [master]
GO
CREATE DATABASE gtd ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\gtd.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

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

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:\Users\User\Documents\SQL Server Management Studio\Projects\ShopDB.mdf',
    SIZE=10MB,
    MAXSIZE=100MB,
    FILEGROWTH=10MB
)
LOG ON 
(
    NAME='LogShopDB',
    FILENAME='C:\Users\User\Documents\SQL Server Management Studio\Projects\ShopDB.ldf',
    SIZE=5MB,
    MAXSIZE=50MB,
    FILEGROWTH=5MB
)
Collate Cyrillic_General_CI_AS

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

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

При выполнении следующего SQL-оператора

USE master;
GO
CREATE DATABASE FortsReplication_FutTrade
ON
PRIMARY  
    (NAME = Arch1,
    FILENAME = 'C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeDat1.mdf',
    SIZE = 100MB,
    MAXSIZE = 1000,
    FILEGROWTH = 50),
    ( NAME = Arch2,
    FILENAME = 'C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeDat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 1000,
    FILEGROWTH = 50),
    ( NAME = Arch3,
    FILENAME = 'C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeDat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 1000,
    FILEGROWTH = 50)
LOG ON 
   (NAME = Archlog1,
    FILENAME = 'C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeLog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 500,
    FILEGROWTH = 50),
   (NAME = Archlog2,
    FILENAME = 'C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeLog2.ldf',
    SIZE = 100MB,
    MAXSIZE = 500,
    FILEGROWTH = 50) ;
GO

возникла следующая ошибка:

Сообщение 5133, уровень 16, состояние 1, строка 1

Поиск каталога для файла «C:\FortsReplicationData\FortsReplication_FutTrade\FutTradeDat1.mdf» не удался, вызвав ошибку операционрной системы 2 (Не удается найти указанный файл)

Сообщение 1802, уровень 16, состояние 1, строка 1

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

Из за чего это может быть?

  • Изменено

    12 июня 2012 г. 3:44

December 13, 2018
MSSQL

ERROR MESAGGE:

CREATE DATABASE failed. Some file names listed could not be created. Check related errors. Cannot create file ‘C:\Program Files\Microsoft SQL Server\MSSQL.x\MSSQL\DATA\<file_name>’ because it already exists. Change the file path or the file name, and retry the operation. (Microsoft SQL Server, Error: 1802)”</file_name>

EXPLANATION:

You may experience this error when creating a database.

Consider the following scenario:

You have a database named “xxx”. By default, if you don’t specifically specify it, the data file name of this database is “xxx.mdf” and the name of the log file is “xxx_log.ldf”.

You want to create one more from the database named “xxx”, but you want to keep the one already created.

For this, you are changing the name of the old “xxx” database to “xxx_old”. But in this case, only the logical name of the database has changed. So the file names remain the same.

The name of the database that you are trying to create is “xxx”, so the file names are identical to the file names of the previously created “xxx” database, so you get errors.

SOLUTION:

If you are trying to create your database using SQL Server Management Studio, you can resolve this issue by specifying the file names yourself as you see below.

If you are creating your database with the CREATE DATABASE command, you can specify the file name as you see in the sample script below.

CREATE DATABASE [xxx] ON PRIMARY 

(NAME = N‘xxx_new’, FILENAME = N‘C:\Program Files\Microsoft SQL Server\MSSQL.x\MSSQL\DATA\xxx_new.mdf’ , SIZE = 3072KB , FILEGROWTH = 1024KB ) 

LOG ON 

( NAME = N‘xxx_log_new’, FILENAME = N‘C:\Program Files\Microsoft SQL Server\MSSQL.x\MSSQL\DATA\xxx_log_new.ldf’ , SIZE = 1024KB , FILEGROWTH = 10%)

Loading

  1. Download the script from this Microsoft Site
  2. Run it as Administrator
  3. Follow the instructions and your set.

UPDATE 9/3/2014

The Microsoft URL above is no longer valid, someone thou took the time to save it to GitHubGist and the link is as follows https://gist.github.com/wadewegner/1677788

UPDATE 11/1/2021

Below is the entire script, don’t recall being able to do this back in 2014, I guess this one of the perks of 2021.

    @echo off
    rem
    rem ****************************************************************************
    rem
    rem    Copyright (c) Microsoft Corporation. All rights reserved.
    rem    This code is licensed under the Microsoft Public License.
    rem    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
    rem    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
    rem    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
    rem    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
    rem
    rem ****************************************************************************
    rem
    rem CMD script to add a user to the SQL Server sysadmin role
    rem
    rem Input:  %1 specifies the instance name to be modified. Defaults to SQLEXPRESS.
    rem         %2 specifies the principal identity to be added (in the form "<domain>\<user>").
    rem            If omitted, the script will request elevation and add the current user (pre-elevation) to the sysadmin role.
    rem            If provided explicitly, the script is assumed to be running elevated already.
    rem
    rem Method: 1) restart the SQL service with the '-m' option, which allows a single connection from a box admin
    rem            (the box admin is temporarily added to the sysadmin role with this start option)
    rem         2) connect to the SQL instance and add the user to the sysadmin role
    rem         3) restart the SQL service for normal connections
    rem
    rem Output: Messages indicating success/failure.
    rem         Note that if elevation is done by this script, a new command process window is created: the output of this
    rem         window is not directly accessible to the caller.
    rem
    rem
    setlocal
    set sqlresult=N/A
    if .%1 == . (set sqlinstance=SQLEXPRESS) else (set sqlinstance=%1)
    if /I %sqlinstance% == MSSQLSERVER (set sqlservice=MSSQLSERVER) else (set sqlservice=MSSQL$%sqlinstance%)
    if .%2 == . (set sqllogin="%USERDOMAIN%\%USERNAME%") else (set sqllogin=%2)
    rem remove enclosing quotes
    for %%i in (%sqllogin%) do set sqllogin=%%~i
    @echo Adding '%sqllogin%' to the 'sysadmin' role on SQL Server instance '%sqlinstance%'.
    @echo Verify the '%sqlservice%' service exists ...
    set srvstate=0
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
    if .%srvstate% == .0 goto existerror
    rem
    rem elevate if <domain/user> was defaulted
    rem
    if NOT .%2 == . goto continue
    echo new ActiveXObject("Shell.Application").ShellExecute("cmd.exe", "/D /Q /C pushd \""+WScript.Arguments(0)+"\" & \""+WScript.Arguments(1)+"\" %sqlinstance% \""+WScript.Arguments(2)+"\"", "", "runas"); >"%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js"
    call "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js" "%cd%" %0 "%sqllogin%"
    del "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js"
    goto :EOF
    :continue
    rem
    rem determine if the SQL service is running
    rem
    set srvstarted=0
    set srvstate=0
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
    if .%srvstate% == .0 goto queryerror
    rem
    rem if required, stop the SQL service
    rem
    if .%srvstate% == .1 goto startm
    set srvstarted=1
    @echo Stop the '%sqlservice%' service ...
    net stop %sqlservice%
    if errorlevel 1 goto stoperror
    :startm
    rem
    rem start the SQL service with the '-m' option (single admin connection) and wait until its STATE is '4' (STARTED)
    rem also use trace flags as follows:
    rem     3659 - log all errors to errorlog
    rem     4010 - enable shared memory only (lpc:)
    rem     4022 - do not start autoprocs
    rem
    @echo Start the '%sqlservice%' service in maintenance mode ...
    sc start %sqlservice% -m -T3659 -T4010 -T4022 >nul
    if errorlevel 1 goto startmerror
    :checkstate1
    set srvstate=0
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
    if .%srvstate% == .0 goto queryerror
    if .%srvstate% == .1 goto startmerror
    if NOT .%srvstate% == .4 goto checkstate1
    rem
    rem add the specified user to the sysadmin role
    rem access tempdb to avoid a misleading shutdown error
    rem
    @echo Add '%sqllogin%' to the 'sysadmin' role ...
    for /F "usebackq tokens=1,3" %%i in (`sqlcmd -S np:\\.\pipe\SQLLocal\%sqlinstance% -E -Q "create table #foo (bar int); declare @rc int; execute @rc = sp_addsrvrolemember '$(sqllogin)', 'sysadmin'; print 'RETURN_CODE : '+CAST(@rc as char)"`) do if .%%i == .RETURN_CODE set sqlresult=%%j
    rem
    rem stop the SQL service
    rem
    @echo Stop the '%sqlservice%' service ...
    net stop %sqlservice%
    if errorlevel 1 goto stoperror
    if .%srvstarted% == .0 goto exit
    rem
    rem start the SQL service for normal connections
    rem
    net start %sqlservice%
    if errorlevel 1 goto starterror
    goto exit
    rem
    rem handle unexpected errors
    rem
    :existerror
    sc query %sqlservice%
    @echo '%sqlservice%' service is invalid
    goto exit
    :queryerror
    @echo 'sc query %sqlservice%' failed
    goto exit
    :stoperror
    @echo 'net stop %sqlservice%' failed
    goto exit
    :startmerror
    @echo 'sc start %sqlservice% -m' failed
    goto exit
    :starterror
    @echo 'net start %sqlservice%' failed
    goto exit
    :exit
    if .%sqlresult% == .0 (@echo '%sqllogin%' was successfully added to the 'sysadmin' role.) else (@echo '%sqllogin%' was NOT added to the 'sysadmin' role: SQL return code is %sqlresult%.)
    endlocal

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка открытия ком порта вики принт
  • Ошибка операции 1073807360 nfs heat
  • Ошибка открытия класса пространственных объектов arcgis
  • Ошибка оператора это
  • Ошибка открытия карты памяти

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии