1с ошибка при добавлении базы на sql

Обновлено: 07.07.2024

На днях столкнулся с одной ошибкой SQL. Попробовал все варианты исправления, и на уровне 1С и на уровне самого SQL, даже индексы хотел было перестроить. Но помогла банальная перезагрузка (физически) сервера.
Но по пути накопал вот этот список ошибок и их решений. В будущем может пригодиться!

Duplicate key в таблице _1scrdoc

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

Восстановление базы только из MDF

1. Создаем новую базу с таким же именем и такимиже по именам и расположению .mdf и .ldf файлами

2. Останавливаем сервер, подменяем файл .mdf

3. Стартуем сервер, не обращаем внимания на статус базы

4. Из QA выполняем скрипт

Use master
go
sp_configure 'allow updates', 1
reconfigure with override
go

4.Там же выполняем

update sysdatabases set status= 32768 where name = '<db_name>'

5. Перезапускаем SQL Server

6. В принципе база должна быть видна (в emergency mode). Можно, например, заскриптовать все объекты. Заходим в EM, выбираем базу, снимаем галку Restricted access в свойствах базы.

7. Из QA выполняем

DBCC REBUILD_LOG('<db_name>', '<имя нового лога с указанием полного пути>')
SQL Server скажет - Warning: The log for database '<db_name>' has been rebuilt.

8. Если все нормально, то там же выполняем

Use master
go
sp_dboption '<db_name>', 'single_user', 'true'
go
USE <db_name>
GO
DBCC CHECKDB('<db_name>', REPAIR_ALLOW_DATA_LOSS)
go

9. Если все в порядке, то

sp_dboption '<db_name>', 'single_user', 'false'
go
Use master
go
sp_configure 'allow updates', 0
go

Ошибка violation of pirmary key при загрузке в базу УРБД

Симпотмы: При загрузке репликации в переферийную базу, SQL вылетает с ошибкой:
Violation of PRIMARY KEY constraint 'PK_RA4047'. Cannot insert duplicate key in object 'RA4047'

Лечение: Для решения данной проблемы отработана следующая технология. Запускаем SQL Profiler с регистрацией ошибок. Когда появляется ошибка смотрим последние операторы, определяем IDDOC сбойного документа. Проблема в том, что признак проведенности по регистру у документа снят (флаг RF), а движения существуют. Вот и происходит ошибка. Лечение - восстановить флаг RF и признак проведенности документы. Можно конечно удалить движения, но не факт, что это правильно отразится на итогах в регистре.

sp_change_users_login AUTO_FIX, 'user_1c'

"Cannot open user default database". Using master database instead

Какой выбрать сервер/сеть & etc для работы 1С на SQL Server Сервер двухпроцессорный , память минимум 256 (лучше больше, SQL память любит, и юзает ее грамотно)

Как производить проверку, переиндексацию базы на SQL Server

Для пересоздания индексов следует воспользоваться командой: DBCC DBREINDEX ('<имя таблицы>') или запустить хранимую процедуру, которая переиндексирует все таблицы в базе данных: EXEC _1sp_DBReindex

Время от времени возникает проблема "Доступ к базе на сервере возможен только из одного каталога информационной базы". Как лечить?

Диагноз: Такая ошибка возникает при попытке загрузить версию 1С для SQL после того, как один из пользователей некорректно вышел из системы. В редких случаях эта ошибка может быть результатом некорректной установки конфигурации.
Анамнез:
После закрытия 1С на сервере NT освобождаются ресурсы, которые занимал пользователь. Однако в случае некорректного завершения работы не останавливается SQL-процесс, запущенный пользователем.

Если пользователи работают по протоколу Named pipes, то можно просто закрыть файлы на SQL-сервере, открытые повисшим пользователем. Такие файлы имеют вид \PIPE\MSSQL$NAMEDSERVER\SQL\query.
Если вышеизложенное слишком сложно для Вас, Вы можете просто перегрузить SQL server. Надо только убедиться, что ни одна другая програма не использует его в этот момент.

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

Умер SQL, но mdf и ldf-файлы остались. Можно ли поднять базу?

exec sp_attach_db <имя БД>,<путь к файлу *.mdf>,<путь к файлу *.ldf>

Ошибка SQL Server "Cannot resolve collation for equal operation"

Данная ошибка возникает при сравнении полей с различной collation. Подробно описание ошибки можно найти в статье "Transact-SQL ReferenceData TypesCollation Precedence" в Books OnLine. В случае 1С это может быть, например, когда различаются collation вашей рабочей базы и базы tempdb. При первоначальной установке collation базы tempdb устанавливается такой же как у сервера и обычно не меняется. Collation базы выбирается при создании базы, но может быть изменена с помощью команды ALTER DATABASE. Поэтому обычно такая ошибка возникает, когда collation базы первоначально была выбрана отличной от collation сервера. База tempdb используется для создания временных таблиц, в частности, когда используется конструкция "В" в запросе или когда используется отбор по группе в других выборках.

Чтобы устранить эту ошибку нужно поменять либо collation рабочей базы, либо collation сервера. Чтобы поменять collation рабочей базы воспользуйтесь командой ALTER DATABASE COLLATION = collation_сервера. При этом сами данные не изменяются. Поэтому необходимо сначала выгрузить ваши данные, а потом загрузить обратно. Я, например, делал это с помощью инструмента Data Transformation Services (DTS) с помощью задачи переноса объекто SQL Server с сервера на сервер. Для этого нужно создать новую базу с collation равной collation сервера, в параметрах задачи (на рабочем поле кликнете правой клавишой мышки, выберите "Disconnected Edit", затем ветку задач, вашу задачу переноса) нужно указать дополнительную опцию ScriptOptionEx = SQLDMOScript2_70Only(16777216), которая укажет не формировать для каждого поля его collation (чтобы не переносить старую). Затем нужно выполнить задачу. Все. Теперь можете пользоваться новой базой, либо загрузить данные обратно.

Про дополнительную опцию можно прочитать в статье "Data Transformation ServicesUsage Considerations in DTSData Conversion and Transformation Considerations".

Ошибка "Could not continue scan with NOLOCK due to data movement"

В BOL причина ошибки связана с сочетанием блокировки (NOLOCK) и уровнем изоляции (READ UNCOMMITED) таким образом, что при чтении данных некоторые прочитанные страницы могут быть удалены до завершения транзакции. Нам это ничего не дает. Кажется, что проблема связана с проектированием 1С. На самом деле система использует другой уровень изоляции, который не может привести к такой ситуации. Обычно ошибка появляется при разрушении данных. На моей памяти это было в двух случаях. Проверка БД производится как обычно с помощью DBCC CHECKDB. Если данные разрушены, то команда выдаст список объектов, в которых найдены повреждения. Сделайте резервную копию и попытайтесь с помощью все той же DBCC CHECKDB восстановить данные. Если повреждения несерьезные, то восстановление проходит гладко. Если нет, то проще произвести восстановление БД из резервной копии.

Совет. Чтобы не возникало данной ошибки, следите за местом на диске, следите за состоянием вашей дисковой системы, ставьте на сервер ИБП, делайте резервные копии.

Каким образом на клиентской рабочей станции можно настроить сетевой протокол (TCP/IP, Named Pipes и т.д.) взаимодействия с сервером MS SQL?

Для этого нужно воспользоваться вышеупомянутой утилитой Client Network Utility. С помощью нее можно настроить тип протокола (TCP/IP, Named Pipes, Multiprotocol и т.д.), а также ряд дополнительных параметров (например, при успользовании протокола TCP/IP можно указать порт, по которому будет производиться подключение к серверу MS SQL).

Как устранить ошибку "База не может быть открыта в однопользовательском режиме"?

Login failed for user XXX. Reason: Not associated with trusted SQL Server connection

1С поддерживает только смешанный режим подключения к SQL Server. Для установки режима подключения в свойствах сервера на закладке Security выберите Mixed mode.

При выгрузке-загрузке 1С зависает, либо вылетает

Одной из причин (довольно распространенной) является наличие реквизитов неограниченной длины. Например, такие рквизиты обычно присутствуют в общих реквизитах документа (Комментарий). При выгрузке такие реквизиты должны стоять в конце списка реквизитов. Если все же ошибка не устраняется, то поробуйте удалить эти реквизиты и произвести выгрузку-загрузку без них.

И конечно же самое первое, что вы должны сделать перед выгрузкой это тестирование базы. Подробно про переход на весрию SQL 1С (в том числе про выгрузку-загрузку) вы можете прочитать в этой статье.

Восстановление базы данных только из MDF

1. Создаем пустую базу с_тем_же_именем, остановливаем сервер и записываем вместо "родного" файла этой базы свой *.mdf.
2. Запускаем сервер. Он переведет базу в suspect.
3. Выводим базу из состояния suspect:

use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
--Для сброса признака suspect выполняем в БД master ХП sp_resetstatus:
update sysdatabases set status=32768 where name='Base_New'
go
--А теперь запретим прямое изменение системных таблиц:
sp_configure 'allow updates',0
go
4. База находится в "emergency mode", поэтому копируем данные из этой базы в новую, используя режим "Copy objects and data, between SQL Server databases".

Автор ответа Джинн, neatmen

База находится в состоянии suspect. Как ее "оживить"?

use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
--Для сброса признака suspect выполняем в БД master ХП sp_resetstatus:
update sysdatabases set status=32768 where name='Base_New'
go
--А теперь запретим прямое изменение системных таблиц:
sp_configure 'allow updates',0
go

Проблемы при соединении с SQL Server установленном на Windows 2003 Server

Неточности СУБД базы данных (ошибка SQL) в программном продукте 1С: Предприятие 8

Данный материал будет полезен пользователям, столкнувшимся с неточностями в работе программных продуктов на платформе 1С: Предприятие 8.

На рисунке 1 приведен пример окна ошибки: Ошибка СУБД Ошибка SQL.

субд1.jpg

Почему возникают такие ошибки?

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

Примеры источников ошибок в функционировании программ 1С и виды визуального выражения нарушения целостности БД (база данных):

аварийное завершение работы ОС с работающей программой 1С: Предприятие 8, в особенности во время формирования, проведения либо удаления файлов;

удаление и повреждение конфигурационных файлов в результате вмешательства со стороны пользователя либо техники;

приостановка процесса восстановления архивной информации;

отсутствие внешнего надежного напряжения питания;

присутствие файлов без нумерации, дат создания;

присутствие файлов с датой создания, которая не соответствует рядом стоящим файлам, к примеру, 2001 г. 01 ч. 01 мин. 01 с.;

присутствие операций без нумерации, дат создания;

недоступность ранее созданных файлов и операций;

отсутствие ссылок на объекты.

Таким образом, в первую очередь нужно завершить работу программы 1С.

После этого создайте копию БД (база данных) с повреждениями (для этого нужно сохранить базу в отдельный каталог на винчестере). Путь, ведущий к местонахождению БД (база данных), можно определить с помощью панели запуска 1С: Предприятие 8 внизу, найдите данный каталог на жестком диске и скопируйте его (смотрите рисунок 2).

Рисунок 2: Окно запуска 1С: Предприятие 8.

субд2.jpg

Далее протестируйте БД (база данных) на физическую целостность (на предмет «разрушения»). Чтобы это сделать, выполните переход к стандартной встроенной обработке 1С: Предприятие 8 по исправлению и тестированию неточностей – chdbfl.exe (загрузить для 1С: Предприятие 8). Данный документ должен присутствовать в каталоге с установленной программой 1С, найдите и выполните его запуск (смотрите рисунок 3).

Рисунок 3: Местонахождение документа chdbfl.exe.

субд3.jpg

Потом выбираем документ 1CV8.1 CD, который можно найти в каталоге нашей БД (база данных) с повреждениями, устанавливаем галочку «Исправлять обнаруженные ошибки» и жмем «Выполнить» (смотрите рисунок 4).

На проверку физической целостности документа БД (база данных) может уйти от 10 мин. до нескольких часов – это определяется объемом вашей БД (база данных) и количеством неточностей в ней. По завершении проверки обнаруженные неточности рекомендуется сохранить в отдельный документ для последующей экспертной диагностики.

Рисунок 4: Окно проверки физической целостности документа информационной базы

субд4.jpg

После этого зайдите в режим конфигуратора (смотрите рисунок 5) и найдите в нем сервисную утилиту “Тестирование и исправление информационной базы” (смотрите рисунок 6).

Меню – Администрирование – Тестирование и исправление

Рисунок 5: Конфигуратор

субд5.jpg

Рисунок 6: Окно тестирования и исправления БД (база данных)

субд6.jpg

Выберите такие пункты, как:

Реиндексация таблиц информационной базы – функция восстановления табличной части БД (база данных).

Проверка логической целостности информационной базы – функция проверки логической целостности БД (база данных).

Проверка ссылочной целостности информационной базы – тестирование внутренних связей таблиц, которые устанавливает программа 1С: Предприятие 8, проверка фактического существования элементов данных со ссылками в полях записи таблиц.

Перерасчет итогов – выполнение полного перерасчета итоговых данных.

Переключатель ниже, выбор пункта «Тестирование и исправление».

Операция «Тестирование и исправление» может длиться от 10 мин. до нескольких часов – это определяется объемом БД (база данных) и количеством неточностей в ней. По завершении проверки обнаруженные неточности рекомендуется сохранить в отдельный документ для последующей экспертной диагностики.

На следующем этапе закройте конфигуратор, откройте БД (база данных) в стандартном режиме и оцените произошедшие изменения с поврежденными файлами либо справочниками, сформируйте ключевые отчеты для сравнения. Если проблемы отсутствуют и все в порядке, смело продолжайте работу с БД (база данных). Если проблема с информационной базой все еще присутствует, приглашайте эксперта по 1С из обслуживающей компании «АйТи-Консалтинг», либо сразу обращайтесь в техническую поддержку 1С.

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

Если Вы слишком заняты и не можете тратить на это время, мы ждем Ваших обращений в сертифицированный центр обслуживания 1С - «АйТи-Консалтинг».

Ни одна программа не застрахована от сбоев в работе. И продукты фирмы 1С в этом отношении не исключение. Сбои при проведении документов и записи элементов справочников, неполадки с ключами лицензий и сетевым доступом, случаются довольно часто. Бывает даже, что выскакивает ошибка при создании информационной базы или добавлении её в список информационных баз. О возможных причинах возникновения исключительных ситуаций при старте программы и путях их преодоления и пойдет наш рассказ.

Что такое список баз данных и где он хранится

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

Список баз хранится в отдельном файле. В зависимости от версии программы его можно найти:

  1. 7 версия хранит этот список в реестре Windows в разделе HKEY_CURRENT_USER->Software->1C->1Cv7->7.7->Titles;
  2. Версия программы 8.1 хранит список баз в файле ibases.v8i, который хранится в папке AppData и свой для каждого пользователя компьютера (полный путь выглядит: AppData->Roaming->1C->1Cv81t);
  3. Более поздние версии тот же файл с базами хранят в папке 1CEstart, расположение которой совпадает с предыдущим разделом.

Таким образом, зная расположение этого файла, администратор может:

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

Ошибка пустого шаблона

Создание новой базы данных из шаблона поставки – процесс элементарный и описанный не раз:

Что делать в такой ситуации? Ответ достаточно прост.

  1. Установка шаблона происходит в определенное место на жестком диске;
  2. При создании новой информационной базы программа не ищет по всем доступным адресам файлы шаблона, а обращается к вполне конкретным ресурсам, указанным в ее настройках.

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


  1. Нажав кнопку «Настройка» в окне выбора, необходимо вызвать форму (Рис.2). Рис.2
  2. В табличное поле «Каталог шаблонов конфигураций и обновлений» добавить адрес, куда устанавливали шаблон.

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

Проблема уникальности

Не очень часто, но бывает, особенно у начинающих пользователей, что процесс добавления новой информационной базы застопоривается на окне подобном Рис.3



Ошибка подключения

Проблемы с сетевым доступом к базе, ошибки в написании адреса базы, перенос сервера, изменение его IP адреса могут вызвать ошибку, представленную на Рис.5


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

Ошибки при создании базы на сервере

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

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

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

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