Ошибка субд microsoft ole db provider for sql server

Как-то случилась у нас на предприятии «беда». Беда эта была связана с базой данных 1С Предприятия 8.2 на MS SQL 2008. Из отделов начали жаловаться на ошибку табличных частей. С программистами 1C, пытались решить данную проблему в кротчайшие сроки, но ничего на ум особого не приходило. Сам я раньше не сталкивался с такой проблемой, поэтому пришлось гуглить и искать решение проблемы. В основном попадались обрывки фраз, которые когда-то люди пытались что-то сделать, а так и не сделали. Все думаю знают, что 1С это вещь такая без которой нельзя, а хотелось бы порой… Много лишнего, проблем (недописок), не правильной структуры и т.п.

Ошибка которая начала появляться:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Недопустимое имя объекта "_Document179_VT3549".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

Ошибка хоть и не была критичной, но не давала работать людям. Были предприняты попытки связаться с интегратором, чтобы он хоть чем-то помог. В основном поступали предложения о том, чтобы загрузить Конфигуратор и попытаться Выгрузить/Загрузить базу в .dt-файл, а также Отсоединить/Присоединить. Из-за большого объема данных, выгрузка dt-файла, заняла бы на нашем даже производительном сервере по меньшей мере сутки! Это нас не устраивало естественно. Около часа я искал в интернете решение проблемы и тут от интегратора получил сообщение следующего содержания:

Попробуйте залить в демо базу архив скажем недельной давности и проверить структуру таблиц, есть ли там например такая строчка "_Document188_VT3785"

Естественно я до этого почему-то не догадался. Был взят бэкап недельной давности, а точнее за 25 число и загружен в демо базу. В табличной части была найдена данная таблица, которая содержала порядка 2500 строк информации. А дальше, дальше я уже понял, что нужно делать. Распишу по пунктам, мало ли сам забуду или кому-нибудь пригодиться.

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

2. Заливаем бэкап в демо базу. Я не использовал консоль, у меня есть Microsoft Managment Studio 2008, поэтому мне было проще. Кто любит извращаться с помощью консоли — Бога ради, пусть делает запросы с помощью нее.

3. Собираем все ошибки воедино, т.е. те которые появляются у пользователей на Недопустимое имя объекта. У меня их обнаружилось всего две, но есть подозрение, что их гораздо больше. (Ошибка таблицы «_Document179_VT3549» и «_Document188_VT3785»).

4. Смотрим в «Плохую базу» есть ли такие табличные части. Если нет, а их скорее всего нет делаем следующее в демо базе: Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя CREATE —> Новое окно редактора запросов.

Появиться окно с запросом CREATE:

USE [Torg_demo]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_Document179_VT3549](
[_Document188_IDRRef] [binary](16) NOT NULL,
[_KeyField] [binary](4) NOT NULL,
[_LineNo3786] [numeric](5, 0) NOT NULL,
[_Fld3787RRef] [binary](16) NOT NULL,
[_Fld3788RRef] [binary](16) NOT NULL,
[_Fld3789RRef] [binary](16) NOT NULL,
[_Fld3790RRef] [binary](16) NOT NULL,
[_Fld3791] [numeric](15, 3) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

Выполняем его на «Плохой базе» предварительно изменив USE [Torg_demo] на USE [Torg]. В результате этого запроса, будет создана таблица. Проделываем данный пункт со всеми табличными частями к которым утрачен доступ и которые требуется создать заново. Напомню мне нужно было создать 2-е таблицы «_Document179_VT3549» и «_Document188_VT3785».

5. В «Здоровой базе» — демо, делаем следующее с таблицами которые нам требуется восстановить. Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя SELECT, затем Используя INSERT. Должно появиться 2-а запроса (заготовки) к базе данных, которые обращаются к табличным частям. Их требуется объединить в один, по моему принципу: INSERT INTO <название таблицы> SELECT <имя столбца>,… FROM <название таблицы>. Данный запрос перенесет все данные которые были в демо базе в основную.

Пример:

INSERT INTO [Плохая база].[dbo].[_Reference120_VT120]
([_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
SELECT
[_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
FROM [Здоровая база].[dbo].[_Reference120_VT120]
GO

Конечный вариант который получился у меня для одной таблицы (проделываем со всеми, то же самое по-аналогии):

INSERT INTO [Torg].[dbo].[_Document179_VT3549]

([_Document179_IDRRef
,[_KeyField]
,[_LineNo3550
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef])
SELECT
[_Document179_IDRRef]
,[_KeyField]
,[_LineNo3550]
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef]
FROM [Torg_demo].[dbo].[_Document179_VT3549]
GO

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

P.S: бросать данную проблему при возникновении не стоит, т.к. можно «огрести» много проблем в дальнейшем.
P.P.S: прошу прощения, что нет картинок на данном этапе.

Как-то случилась у нас на предприятии «беда». Беда эта была связана с базой данных 1С Предприятия 8.2 на MS SQL 2008. Из отделов начали жаловаться на ошибку табличных частей. С программистами 1C, пытались решить данную проблему в кротчайшие сроки, но ничего на ум особого не приходило. Сам я раньше не сталкивался с такой проблемой, поэтому пришлось гуглить и искать решение проблемы. В основном попадались обрывки фраз, которые когда-то люди пытались что-то сделать, а так и не сделали. Все думаю знают, что 1С это вещь такая без которой нельзя, а хотелось бы порой… Много лишнего, проблем (недописок), не правильной структуры и т.п.

Ошибка которая начала появляться:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Недопустимое имя объекта "_Document179_VT3549".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

Ошибка хоть и не была критичной, но не давала работать людям. Были предприняты попытки связаться с интегратором, чтобы он хоть чем-то помог. В основном поступали предложения о том, чтобы загрузить Конфигуратор и попытаться Выгрузить/Загрузить базу в .dt-файл, а также Отсоединить/Присоединить. Из-за большого объема данных, выгрузка dt-файла, заняла бы на нашем даже производительном сервере по меньшей мере сутки! Это нас не устраивало естественно. Около часа я искал в интернете решение проблемы и тут от интегратора получил сообщение следующего содержания:

Попробуйте залить в демо базу архив скажем недельной давности и проверить структуру таблиц, есть ли там например такая строчка "_Document188_VT3785"

Естественно я до этого почему-то не догадался. Был взят бэкап недельной давности, а точнее за 25 число и загружен в демо базу. В табличной части была найдена данная таблица, которая содержала порядка 2500 строк информации. А дальше, дальше я уже понял, что нужно делать. Распишу по пунктам, мало ли сам забуду или кому-нибудь пригодиться.

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

2. Заливаем бэкап в демо базу. Я не использовал консоль, у меня есть Microsoft Managment Studio 2008, поэтому мне было проще. Кто любит извращаться с помощью консоли — Бога ради, пусть делает запросы с помощью нее.

3. Собираем все ошибки воедино, т.е. те которые появляются у пользователей на Недопустимое имя объекта. У меня их обнаружилось всего две, но есть подозрение, что их гораздо больше. (Ошибка таблицы «_Document179_VT3549» и «_Document188_VT3785»).

4. Смотрим в «Плохую базу» есть ли такие табличные части. Если нет, а их скорее всего нет делаем следующее в демо базе: Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя CREATE —> Новое окно редактора запросов.

Появиться окно с запросом CREATE:

USE [Torg_demo]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_Document179_VT3549](
[_Document188_IDRRef] [binary](16) NOT NULL,
[_KeyField] [binary](4) NOT NULL,
[_LineNo3786] [numeric](5, 0) NOT NULL,
[_Fld3787RRef] [binary](16) NOT NULL,
[_Fld3788RRef] [binary](16) NOT NULL,
[_Fld3789RRef] [binary](16) NOT NULL,
[_Fld3790RRef] [binary](16) NOT NULL,
[_Fld3791] [numeric](15, 3) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

Выполняем его на «Плохой базе» предварительно изменив USE [Torg_demo] на USE [Torg]. В результате этого запроса, будет создана таблица. Проделываем данный пункт со всеми табличными частями к которым утрачен доступ и которые требуется создать заново. Напомню мне нужно было создать 2-е таблицы «_Document179_VT3549» и «_Document188_VT3785».

5. В «Здоровой базе» — демо, делаем следующее с таблицами которые нам требуется восстановить. Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя SELECT, затем Используя INSERT. Должно появиться 2-а запроса (заготовки) к базе данных, которые обращаются к табличным частям. Их требуется объединить в один, по моему принципу: INSERT INTO <название таблицы> SELECT <имя столбца>,… FROM <название таблицы>. Данный запрос перенесет все данные которые были в демо базе в основную.

Пример:

INSERT INTO [Плохая база].[dbo].[_Reference120_VT120]
([_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
SELECT
[_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
FROM [Здоровая база].[dbo].[_Reference120_VT120]
GO

Конечный вариант который получился у меня для одной таблицы (проделываем со всеми, то же самое по-аналогии):

INSERT INTO [Torg].[dbo].[_Document179_VT3549]

([_Document179_IDRRef
,[_KeyField]
,[_LineNo3550
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef])
SELECT
[_Document179_IDRRef]
,[_KeyField]
,[_LineNo3550]
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef]
FROM [Torg_demo].[dbo].[_Document179_VT3549]
GO

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

P.S: бросать данную проблему при возникновении не стоит, т.к. можно «огрести» много проблем в дальнейшем.
P.P.S: прошу прощения, что нет картинок на данном этапе.

  

Kleo

16.12.15 — 06:18

Здравствуйте!

База УПП 1.3.70.1, релиз платформы 8.3.6.2421. База РИБ (Центральная), в Периферийной все работает нормально.

База на SQL 2012, Сервер 1С 64-х разрядный.

так вот вылетает ошибка при проведении Требовании-накладной или Возврат переданных товаров и вылетает программа:

Ошибка СУБД:

Microsoft OLE DB Provider for SQL Server. Внимание! Произошла неустранимая ошибка 824. Запомните ошибку и время, когда она произошла, и обратитесь к системному администратору.

HRESULT=80004005, SQLSrvr=HY000, state = 1, severity=18, native=21, line=1

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

Опишу подробно:

1) Рестарт сервера 1С и SQL ничего не дает, или дает временно.

2) далее по поводу cf-к и т.д. в том, что памяти не хватает  — это тоже не по теме, т.к. сервер 64-х разрядный.

3) далее сделала следующие манипуляции, которые мне посоветовали:

— сделала бэкап с клиент-серверной рабочей базы;

— загрузила бэкап в другую клиент-серверную базу-копию;

— из этой копии выгрузила dt-ник;

— далее загрузила этот dt-ник в файловую базу;

— протестировала 1CD (нет ошибок), сделала тестирование из конфигуратора — Тестирование и исправление (проверка логической и ссылочной целостности)

— затем из файловой базы выгрузила dt-ник и загрузила его в рабочую клиент-серверную базу.

Делала до этого тоже самое помогло, но не надолго, только отличие было в том, что dt-ку выгружала и загружала снова в копию клиент-серверного варианта.

Сейчас сделала через файловую, как описала выше, жду результата, что будет.

А тем временем попробовала на копии клиент-серверного варианта запустить проверку в SQL с помощью следующего запроса:

ALTER DATABASE UPP

SET SINGLE_USER

WITH ROLLBACK IMMEDIATE;

GO

DBCC CHECKDB (‘UPP’, REPAIR_REBUILD) WITH NO_INFOMSGS

GO

Проверка выдала следующее:

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

Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). Не удалось обработать страницу (1:2541984).  Подробные сведения см. в других сообщениях об ошибках.

        Уровень исправлений для данной инструкции DBCC вызвал обход данного исправления.

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data) страница (1:2541984). Проверка (IS_OFF (BUF_IOERR, pBUF->bstat)) не пройдена. Значения равны 2057 и -4.

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

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). Страница (1:2541984) не обнаружена при просмотре, хотя на нее ссылаются родительская страница (1:2539467) и предыдущая страница (1:2541983). Проверьте наличие предыдущих ошибок.

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

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). На страницу (1:2702132) отсутствует ссылка с предыдущей страницы (1:2541984). Возможна ошибка связывания цепочек.

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

CHECKDB обнаружил 0 ошибок размещения и 4 ошибок согласованности в таблице «_AccumRg23823» (идентификатор объекта 279945065).

CHECKDB обнаружил 0 ошибок размещения и 4 ошибок согласованности в базе данных «UPP».

repair_allow_data_loss — это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (UPP, repair_rebuild).

таблица «_AccumRg23823»  — это регистр накопления «НДС по партиям запасов»

И как и что исправить не знаю? Подскажите, пожалуйста!

  

Kleo

1 — 16.12.15 — 06:22

Причина найдена, а вот как исправить это средствами SQL — не знаю. Впервые сталкиваюсь с прямыми запросами SQL. Подскажите, пожалуйста, что нужно сделать с индексами таблицы регистра накопления «НДС по партиям запасов» —  «_AccumRg23823»

  

los_hooliganos

2 — 16.12.15 — 06:28

(1) Сделайте бекап. Удалите все индексы данного регистра. Пересохраните конфигурацию. Сделайте реиндексацию.

  

zva

3 — 16.12.15 — 06:30

«repair_allow_data_loss — это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (UPP, repair_rebuild)»

Запуститу на копии DBCC CHECKDB (‘UPP’, REPAIR_ALLOW_DATA_LOSS) для начала…

  

Kleo

4 — 16.12.15 — 06:35

(2) данные не потеряются, если удалить индексы?

Открыла ветку с индексами — там их 6 уникальных некластеризованных и 1 кластеризованный. Их просто удалить???

  

Kleo

5 — 16.12.15 — 06:39

(3) да, хотела попробовать так сделать на копии. а данные не потеряются, если запустить такую проверку?

  

los_hooliganos

6 — 16.12.15 — 06:48

(4) Потеряются только если кластерезованный индекс удалите напрямую :))

  

Kleo

7 — 16.12.15 — 06:50

(6) так а как удалить правильно в SQL? Если можно, то пошагово, пожалуйста

  

zva

8 — 16.12.15 — 06:51

(7) http://catalog.mista.ru/public/192648/

Только кластеризованный не трогайте

  

Kleo

9 — 16.12.15 — 07:04

(8) я читала такую ссылку. в конце ссылки приводится две картинки.

Нахожу таблицу «_AccumRg23823», раскрываю ее, нахожу «Индексы» — далее нажимаю «Создать скрипт для индекса» — Используя CREATE — Новое окно редактора запроса

При этом открывается окно запроса с текстом запроса:

/****** Object:  Index [_Accum23823_ByDims23843_RTRN]    Script Date: 16.12.2015 10:05:44 ******/

CREATE UNIQUE NONCLUSTERED INDEX [_Accum23823_ByDims23843_RTRN] ON [dbo].[_AccumRg23823]

(

    [_Fld23825RRef] ASC,

    [_Period] ASC,

    [_RecorderTRef] ASC,

    [_RecorderRRef] ASC,

    [_LineNo] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

Дальше что я должна сделать?

  

los_hooliganos

10 — 16.12.15 — 07:08

(9) Дальше удаляйте, а потом пересоздавайте по скрипту.

А можно было просто пересохранить конфу. Она сама индексы пересоздаст

  

Kleo

11 — 16.12.15 — 07:13

(10) нужно запускать запрос в (9) «Выполнить» или нет?

(10) что значит пересохранить конфу? можно подробнее?

  

Ёпрст

12 — 16.12.15 — 07:23

Че паритесь ? Просто truncate table _AccumRg23823 и дальше пересчет итогов этого регистра

  

Ёпрст

13 — 16.12.15 — 07:25

А блин, це же табличка с движениями.. Ну, тогда не выйдет с очисткой е1ё.

  

Kleo

14 — 16.12.15 — 07:35

Сделала, как по ссылке Создала скрипты для индексов, просто вышло много окон с текстами запросов для 6 некластеризованных индексов и все. затем удалила эти 6 индексов. А как теперь их создать?

Затем пишут:

«Затем выполним поочередно скрипты по созданию индексов в открытых окнах, попутно закрывая их (чтобы ничего не забыть).»

Что это значит? Как сделать?

  

los_hooliganos

15 — 16.12.15 — 07:52

(14) Выполнить запрос написанный в скрипте

  

Kleo

16 — 16.12.15 — 08:02

(15) Т.е. по описанию в ссылке я должна сначала создать скрипты по 6 индексам, сохранить себе их данные, затем индексы удалить и создать их снова, скопировав запросы созданных скриптов, и нажать по каждому индексу выполнить. А при создании нового индекса выбирать те поля, которые указаны в скрипте? Так?

  

Kleo

17 — 16.12.15 — 08:36

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

Неуточненные транзакции проходят откат. Предварительно выполнение отката: 0%.

Неуточненные транзакции проходят откат. Предварительно выполнение отката: 100%.

Это хорошо или нет?

  

los_hooliganos

18 — 16.12.15 — 08:47

(17) Проверьте что коннект стоит к нужной базе.

  

Kleo

19 — 16.12.15 — 09:02

(18) как это сделать?

все делала на копии. при загрузке базы провела документ, на котором вылетала база — провелся!

  

los_hooliganos

20 — 16.12.15 — 09:20

(19) Там в отдельном поле видно название БД с которой вы работаете

  

Kleo

21 — 16.12.15 — 09:32

(20) Спасибо большое за помощь!

А еще вопрос: какая может быть причина, что полетели индексы регистра накопления? Что могло послужить причиной?

  

Kleo

22 — 16.12.15 — 10:47

А можно было по сути запустить реиндексацию таблиц информационной базы (по сути это и есть манипуляции с dt-ником)?

И можно еще спросить здесь же: эта проблема возникла в Центральной базе, а в Периферийной базе вообще можно запускать реиндексацию таблиц информационной базы? И вообще какое еще тестирование можно проводить в Периферийной базе?

  

los_hooliganos

23 — 16.12.15 — 11:24

(22) Канешна можно. Индексы строго говоря не зависят от базы. Кроме кластерного индекса, тн Прайм Кей. Кластерный индекс это сортировка самой таблицы, столбец который сортируется и есть кластерный индекс.

Но в каждой БД, даже если 2 БД одинаковые с точки зрения 1С, сортировка внутри таблиц может быть разной.

  

Kleo

24 — 16.12.15 — 11:31

(23) а в Периферийной какое тестирование можно запускать в  режиме Конфигуратора?

  

Necessitudo

25 — 16.12.15 — 11:42

(24) Зачем периферийную трогать?

  

Kleo

26 — 16.12.15 — 13:06

(25) Я имею ввиду на будущее потом, вообще ее нужно тестировать? И если да, то какие проверки можно задавать?

 0 

Распечатать

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных «zup» заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы
sys. databases HRESULT=80040E14, SQLStvr: Error state=2, Severity=11,native=9002, line=1

или

Ошибка СУБД:
Microsoft OLE Provider for SQL Server: The transaction log for database “DataBase” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column is sys.database
HRESULT=80040E14, SQLSTATE=4 2000, native=9002

Решение:
1. Посмотрите сколько свободного места осталось на дисках, может его нет и логу некуда записаться…
2. Это ошибка Microsoft SQL Server — переполняется лог транзакций и не очищается. Урезать его возможно различными способами, в том числе и с помощью стандартной оснастки, но не всегда данная операция получается, и размер файла лога остается прежним. Как вариант предлагаю следующее решение из двух строчек:
для использования убрать символ _

Код SQL

  use master
backup log myDataBase with T_runcate_only
use myDataBase
DBCC SHRINKFILE (myDataBase_Log,20)

Где myDataBase – имя базы данных, 20 – Размер лога в мегабайтах.

  • Remove From My Forums
  • Общие обсуждения

  • Доброго времени!

    По какой причине может возникать такая ошибка. Возникает она в разных местах при работе с БД 1С 8.2: УПП и MS SQL Server 2005.

    Ошибка при выполнении операции с информационной базой

    Ошибка СУБД:

    Microsoft OLE DB Provider for SQL Server: [DBNETLIB][ConnectionOpen (PreLoginHandeshake()).]Общая ошибка сети. Обратитесь к документации по сети. HRESULT=80004005, SQLSrvr: SQLSTATE=08001, state=1, Severity=10, native=11, line=0

    • Изменен тип

      29 октября 2010 г. 13:46

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

В данном случае Microsoft OLE DB Provider for SQL Server выдаёт такую информацию: «Неопознанная ошибка hresult 80004005». При этом главным признаком проблемы является невозможность выгрузить информацию в базу.

Следует отметить, что ошибки, содержащие именно код 80004005, встречаются постоянно. У них есть особая классификация, которую при желании можно найти в соответствующей литературе.

Ошибка выделения памяти hresult 80004005

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

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

Поддержка конфигурации требует её проверки и у поставщиков. С этой целью:

  • нужно сохранить данные о конфигурации поставщиков. Для этого используйте CF-файл;
  • теперь необходимо провести загрузку файла в обновлённую базу;
  • выполните операцию, которая описана в п.1.

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

Сейчас уже любой релиз, который выпускает 1С, не имеет таких сложностей.

Ошибка hresult 80004005

Сопутствующая проблема и методы её решения

С ситуацией, описанной ранее, тесно связана ещё одна, происходящая параллельно. Выглядит она так: 10007066.

Суть проблемы: когда используется СУБД MS SQL SERVER, во время записи объекта из базы с несколькими колонками (например, «Значения» и «Хранилища»), часто случается другой тип ошибки.

Выглядит она таким образом:

Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005.

Когда происходит ошибка 1с hresult clr 80004005, программа завершает свою работу в аварийном режиме.

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

С помощью средств MS SQL Server Query Analizer нужно найти в табличке несколько колонок image и сделать для каждой следующий запрос

select top 10 DATALENGTH(_Fld4044 from _InfoReg4038  order by DATALENGTH(_Fld4044) desc

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

Ошибка выделения памяти hresult 80004005 (на английском это out of memory for query result 1с) может происходить вследствие различных причин, имеющей общую черту. Для системы 1С это, прежде всего, недостаток оперативной памяти. Если говорить точнее, речь идёт о некорректном применении возможностей памяти, поэтому для решения задачи лучше использовать несколько косвенных алгоритмов.

Необходимо сделать рестарт (перезапуск) сервера. Таким образом памяти, которая доступна для работы, временно станет больше. Также есть возможность воспользоваться сервером в 64 разряда, содержащем приложения.

Исходя из опыта, ошибка СУБД hresult 80004005 чаще определяется двумя факторами:

  • данные хранятся в хранилище значений (реквизите);
  • в таблице конфигураций содержатся двоичные данные объёмом более 120 мегабайт.

Когда советы от сотрудников 1С не приносят результата (ошибка 1с hresult 80004005 остаётся), попробуйте воспользоваться другой пошаговой инструкцией:

Наши постоянные клиенты по 1С:

Корона Лифт

Гознак

Накфф

Рембаза

Rozara

  • используйте все базы, включив у них все фоновые задачи;
  • в 8.1.11. должен появиться переключатель о запрете на фоновые задачи (во время создания базы);
  • сделайте перезапуск сервера.

Имеет смысл проверки работоспособности. Тем не менее вследствие утечек памяти проблема может возникнуть снова — после перезапуска. В этом случае целесообразно:

  • воспользоваться инструментами sql и сделать бэкап;
  • снять базу с поддержки;
  • выгрузить  cf.

Во время любых действий следует копировать файлы в резерв, так как в любой момент может возникнуть необходимость возвращения к исходному статусу информации. Далее надо убрать в менеджменте консоли (config) запись «более 120 мегабайт» и провести загрузку конфигурации (не объединять, а загрузить).

Есть ещё один способ, с помощью которого неопознанная ошибка субд hresult 80004005 может быть исправлена. Нужно открыть конфигуратор и снять конфигурацию, не сохраняя её. Далее, сохранив, нужно поместить её в отдельный файл без сохранения её изменённого вида.

Выполните в SQL операцию, предназначенную для конкретной базы:

DELETE FROM dbo.Config WHERE DataSize > 125829120

После выполнения этой команды проведите загрузку сохранённой конфигурации.

Что касается радикальных шагов, используемых в особо трудных ситуациях, иногда помогает такая схема:

  • удалите таблицу config из базы данных, воспользовавшись менеджментом консоли DROP TABLE [dbo].[Config];
  • проведите загрузку конфигурации (не «объединить»,а именно «загрузить»).

После проведения проверки проблема должна уйти.

  • Стоимость работ специалистов IT Rush — 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

16.05.2017

Пошаговая инструкция по уменьшению лога транзакций (*.ldf) MS SQL 2008/2012.

Когда при подключении к базе MS SQL появляются ошибки:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных «ReportServer» заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы
sys. databases HRESULT=80040E14, SQLStvr: Error state=2, Severity=11,native=9002, line=1

или 

Ошибка СУБД:
Microsoft OLE Provider for SQL Server: The transaction log for database “ReportServer” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column is sys.database
HRESULT=80040E14, SQLSTATE=4 2000, native=9002

это значит, что на диске, где расположен лог транзакций закончилось место и теперь СУБД некуда записывать данные о новых транзакциях. Чаще всего такое происходит, когда не установлено никаких ограничений на размер лога и в MS SQL не создано соответствующих планов обслуживания.

В таком случае нужно уменьшить размер самого файла транзакций (*.ldf), другими словами сделать шринк (сжатие) лога. Для этого можно использовать как запрос, так и сжатие лога вручную. 

Рассмотрим сжатие лога транзакций вручную:

Шаг 1. Установить модель восстановления Простая (Simple). Правой кнопкой на базе — Свойства(Properties) — Параметры(Options) — 4-й сверху пункт Модель восстановления(Recovery model) — Простая(Simple) — OK.

Шринк лога MS SQL 2008/2012

Шринк лога транзакций MS SQL 2008/2012

Шаг 2. Выполнить шринк (сжатие) лога транзакций. Правой кнопкой на базе — Задачи(Tasks) — Сжать(Shrink) — Файлы(Files) — установить Тип файла(File type) — Журнал(Log) — в Операция сжатия(Shrink action) — выбрать Реорганизовать страницы, перед тем осводить неиспользуемое место(Reorganize pages before releseasing unused space) — Сжать файл (Shrink file to) — 
указать приемлемый размер лога.

Шринк лога транзакций MS SQL 2008/2012

 Шринк лога транзакций MS SQL 2008/2012

Шаг 3. Установить модель восстановления Полная(Full). Правой кнопкой на базе — Свойства(Properties) — Параметры(Options) — 4-й сверху пункт Модель восстановления(Recovery model) — Полная(Full) — OK. 

 Шринк лога транзакций MS SQL 2008/2012

P.S.: В данной статье даны рекомендации для решения конкретной проблемы. Настройка самого MS SQL здесь не рассматривается! 

1С 8 Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных «Торговля» переполнен. Причина: «ACTIVE_TRANSACTION»

Описание ошибки:
При попытке восстановления архива базы в клиент-серверную версию возникла ошибка:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные по причине:
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных «Торговля» переполнен. Причина: «ACTIVE_TRANSACTION».
HRESULT=80004005, SQLSrvr: SQLSTATE=42000, state=4, Severity=11, native=9002, line=1

Найденные решения:

Ошибка загрузки информационной базы. В информационную базу загружены не все данные

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

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

19-11-2015

Журавлев А.С.
(www.azhur-c.ru)

I have migrated a classic ASP site to a new server and am getting the following error, message.

I have tried different connection strings but none of them work.

I am not even sure if the connection string is the problem

The new server is a Windows 2012 Server, SQL Server 2008 R2 Express machine.


Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

/scripts/dbcode.asp, line 31 

Application("C2M_ConnectionString") = "Provider=SQLNCLI10;Server=(local);Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"

Hiten004's user avatar

Hiten004

2,4191 gold badge21 silver badges34 bronze badges

asked Feb 28, 2013 at 2:52

Burt's user avatar

9

If it is an Express instance, it is most likely not a default instance, but rather a named instance. So you probably meant:

... "Provider=SQLNCLI10;Server=.SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^

Otherwise you’ll need to show us the server properties in SQL Server Configuration Manager on that machine in order for us to be able to tell you how to correct your connection string.

answered Feb 28, 2013 at 3:27

Aaron Bertrand's user avatar

Aaron BertrandAaron Bertrand

268k36 gold badges457 silver badges485 bronze badges

3

As Aaron Bertrand mentioned it would be interesting to have a look at your connection properties (In Sql Server configuration check if the following are enabled Name Pipes and TCP/Ip).
Since you’re able to connect from SSMS i would ask to check if the Remote connection is allowed on that server Also can you tell is the Sql browser service is running?

here is a link that i keep close to me as a reminder or check list on probable connection issues on SQL Server.
Sql Connection Issues
And lastly can you try as provider «SQLNCLI» instead of «SQLNCLI10»

answered Mar 4, 2013 at 23:02

Raymond A's user avatar

Raymond ARaymond A

7531 gold badge14 silver badges29 bronze badges

2

Step-1: Enabling TCP/IP Protocol
Start >> All Programs >> Microsoft SQL Server >> Configuration Tools >> SQL Server Configuration Manager >> SQL Server Network Configuration >> Protocols for MSSQLSERVER >> right click “TCP/IP” and select “Enable”.

Step-2: change specific machine name in Data Source attributes’value to (local) will resovle the problem ni SQL SERVER 2012.

answered Sep 28, 2014 at 16:31

BALAJE's user avatar

Try pinging the server in your connection string. The server your application resides on should be able to communicate on the port you specify by credentials. If you are developing locally try specifying «localhost». If the server is clustered or you installed as an instance then you need to specify that instance. Also make sure the server is configured for mixed-mode authentication if using sql credentials.

OR Try

Data Source=localhost;Initial Catalog=DBNAME;Persist Security Info=True;User ID=MyUserName; Password=MyPassword;

answered Feb 28, 2013 at 3:00

Ross Bush's user avatar

Ross BushRoss Bush

14.3k2 gold badges34 silver badges54 bronze badges

3

It can be a permission issue , Please check is that server is connecting with same configuration detail from SQL management.
other is username / password is wrong.

answered Feb 28, 2013 at 12:00

Jinesh Jain's user avatar

Jinesh JainJinesh Jain

1,2328 silver badges22 bronze badges

5

Here is what I would do:

EDIT: Note that this SO post, a few down, has an interesting method for creating the correct connection string to use.

  1. Open SSMS (Sql Server Management Studio) and copy/paste the
    username/password. Don’t type them, copy/paste. Verify there isn’t
    an issue.
  2. Fire up the code (this is next for me b/c this would be the next
    easiest thing to do in my case) and step to line 31 to verify that
    everything is setup properly. Here is some info on how to do
    this. I understand that this may be impossible for you with this
    being on production so you might skip this step. If at all possible
    though, I’d set this up on my local machine and verify that there is
    no issue connecting locally. If I get this error locally, then I
    have a better chance at fixing it.
  3. Verify that Provider=SQLNCLI10 is installed on the production
    server. I would follow this SO post, probably the answer posted
    by gbn.
  4. You have other working websites? Are any of them classic asp? Even
    if not, I’d compare the connection string in another site to the one
    that you are using here. Make sure there are no obvious differences.
  5. Fire up SQL Server Profiler and start tracing. Connect to the site
    and cause the error then go to profiler and see if it gives you an
    additional error information.
  6. If all of that fails, I would start going through this.

Sorry I can’t just point to something and say, there’s the problem!

Good luck!

Community's user avatar

answered Mar 5, 2013 at 14:08

Mike C.'s user avatar

Mike C.Mike C.

2,9842 gold badges20 silver badges18 bronze badges

5

Have you ever tried SQL Server OLE DB driver connection string:

"Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;"

or ODBC driver:

"Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"

At least this is what I would do if nothing helps. Maybe you will be able to get more useful error information.

answered Mar 8, 2013 at 0:23

Slava's user avatar

SlavaSlava

1,0355 silver badges11 bronze badges

Have you tried to use the server IP address instead of the «(local)»?
Something like «Server=192.168.1.1;» (clearly you need to use the real IP address of your server)

In case you try to use the server IP address, check in the «SQL-Server configurator» that SQL Server is listening on the IP address you use in your connection. (SQL Server Configurator screenshot)

Other useful thing to check / try:

  • And check also if the DB is in the default SQL Server instance, or if it is in a named instance.
  • Do you have checked if the firewall have the TCP/IP rule for opening the port of you SQL Server?
  • Have you tried to connect to SQL Server using other software that use the TCP/IP connection?

Community's user avatar

answered Mar 9, 2013 at 17:56

Max's user avatar

MaxMax

7,2682 gold badges29 silver badges32 bronze badges

The SQL Server Browser service is disabled by default on installation. I’d recommend that you enable and start it. For more information, see this link and the section titled «Using SQL Server Browser» for an explanation of why this might be your problem.

If you don’t wish to enable the service, you can enable TCP/IP protocol (it’s disabled by default), specify a static port number, and use 127.0.01,<port number> to identify the server.

answered Mar 10, 2013 at 16:41

Paul Keister's user avatar

Paul KeisterPaul Keister

12.7k5 gold badges45 silver badges74 bronze badges

In line 31:

cmd.ActiveConnection = Application("C2M_ConnectionString")

How are you instantiating cmd?

Rather than the ConnectionString being wrong, maybe cmd is acting differently in the new environment.

Edited to add:

I see that you’ve gone from IIS 7 to IIS 8. To run Classic ASP sites on IIS 7 required manual changes to server defaults, such as «allow parent paths.» Is it possible that some of the needed tweaks didn’t get migrated over?

If you’re not running with Option Strict On, you should try that — it often reveals the source of subtle problems like this. (Of course, first you’ll be forced to declare all your variables, which is very tedious with finished code.)

answered Mar 5, 2013 at 23:53

egrunin's user avatar

egruninegrunin

24.5k8 gold badges49 silver badges92 bronze badges

1

Ошибка возникла на Windows Server 2008 R2 при попытке входа в ИБ 1С SQL. При этом на сервере зарегистрированы несколько баз: в одни пользователям удается войти, в другие — нет.

Со стороны клиентского приложения выводится сообщение «В данный момент вход в приложение невозможен, попробуйте войти позже».

Полный текст ошибки при выборе «Показать подробности…»: «Ошибка СУБД: Компоненты OLE DB провайдера не найдены CoCreateInstance: -2147023878(0x800703FA): Попытка произвести недопустимую операцию над параметром реестра, отмеченным для удаления».

Вид ошибки в клиентском приложении 1С

Причина

Сообщение может быть выдано, если сервер 1С:Предприятия не смог создать COM-объект OLE DB Provider for Microsoft SQL Server. Другие возможные причины: нехватка оперативной памяти, ошибки ОЗУ или сбой службы/кэша 1С.

Варианты решений

1. Если 1С запускается на терминальном сервере, завершите полностью сеансы пользователя и выполните повторный вход.

2. Запустите командную строку от имени администратора и выполните проверки диска(-ов) на ошибки и целостность системных файлов.

chkdsk %SystemDrive%
sfc /scannow

3. Проверьте свободное место на диске(-ах). Сделайте очистку при необходимости.

4. Выполните очистку локального/серверного кэша 1С.

5. Убедитесь, что у пользователя, от имени которого запускается «Агент сервера 1С:Предприятия», есть права на каталог, содержащий компоненту OLE DB провайдера и на файлы в этом каталоге.

  • Найдите в системном реестре ветку
    HKEY_CLASSES_ROOTCLSID{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}InprocServer32
    и посмотрите путь до файла sqloledb.dll в параметре «(По умолчанию)»
    Например: «%CommonProgramFiles%SystemOle DBsqloledb.dll»
  • Проверьте, что файл библиотеки sqloledb.dll находится в папке. Каталог с файлом должен быть доступен пользователю USR1CV8 (Учетная запись для Сервера 1С:Предприятия 8).
  • Переустановите Microsoft Data Access Components (MDAC).

6. Перезагрузите службы 1С и SQL. Последовательно остановите Агент 1С, службы SQL Server. Далее запустите SQL Server > Агент 1C.

7. Для проверки перезапустите «Агент сервера 1С:Предприятия» от имени системной учетной записи. Вход от имени: Локальная система.

8. Через оснастку «Администрирование серверов 1С Предприятия» удалите запись о сбойной ИБ в режиме «Оставить без изменений». Зарегистрируйте ИБ на сервере 1С повторно.

9. Перезагрузите сервер.

10. Выполните восстановление 1С в панели «Программы и компоненты» или переустановите платформу и сервер 1С.

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

__________
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь → +7-911-500-10-11

I have migrated a classic ASP site to a new server and am getting the following error, message.

I have tried different connection strings but none of them work.

I am not even sure if the connection string is the problem

The new server is a Windows 2012 Server, SQL Server 2008 R2 Express machine.


Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

/scripts/dbcode.asp, line 31 

Application("C2M_ConnectionString") = "Provider=SQLNCLI10;Server=(local);Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"

Hiten004's user avatar

Hiten004

2,4171 gold badge22 silver badges34 bronze badges

asked Feb 28, 2013 at 2:52

Burt's user avatar

9

If it is an Express instance, it is most likely not a default instance, but rather a named instance. So you probably meant:

... "Provider=SQLNCLI10;Server=.SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^

Otherwise you’ll need to show us the server properties in SQL Server Configuration Manager on that machine in order for us to be able to tell you how to correct your connection string.

answered Feb 28, 2013 at 3:27

Aaron Bertrand's user avatar

Aaron BertrandAaron Bertrand

272k36 gold badges465 silver badges487 bronze badges

3

As Aaron Bertrand mentioned it would be interesting to have a look at your connection properties (In Sql Server configuration check if the following are enabled Name Pipes and TCP/Ip).
Since you’re able to connect from SSMS i would ask to check if the Remote connection is allowed on that server Also can you tell is the Sql browser service is running?

here is a link that i keep close to me as a reminder or check list on probable connection issues on SQL Server.
Sql Connection Issues
And lastly can you try as provider «SQLNCLI» instead of «SQLNCLI10»

answered Mar 4, 2013 at 23:02

Raymond A's user avatar

Raymond ARaymond A

7631 gold badge12 silver badges29 bronze badges

2

Step-1: Enabling TCP/IP Protocol
Start >> All Programs >> Microsoft SQL Server >> Configuration Tools >> SQL Server Configuration Manager >> SQL Server Network Configuration >> Protocols for MSSQLSERVER >> right click “TCP/IP” and select “Enable”.

Step-2: change specific machine name in Data Source attributes’value to (local) will resovle the problem ni SQL SERVER 2012.

answered Sep 28, 2014 at 16:31

BALAJE's user avatar

Try pinging the server in your connection string. The server your application resides on should be able to communicate on the port you specify by credentials. If you are developing locally try specifying «localhost». If the server is clustered or you installed as an instance then you need to specify that instance. Also make sure the server is configured for mixed-mode authentication if using sql credentials.

OR Try

Data Source=localhost;Initial Catalog=DBNAME;Persist Security Info=True;User ID=MyUserName; Password=MyPassword;

answered Feb 28, 2013 at 3:00

Ross Bush's user avatar

Ross BushRoss Bush

14.6k2 gold badges31 silver badges55 bronze badges

3

It can be a permission issue , Please check is that server is connecting with same configuration detail from SQL management.
other is username / password is wrong.

answered Feb 28, 2013 at 12:00

Jinesh Jain's user avatar

Jinesh JainJinesh Jain

1,2329 silver badges22 bronze badges

5

Here is what I would do:

EDIT: Note that this SO post, a few down, has an interesting method for creating the correct connection string to use.

  1. Open SSMS (Sql Server Management Studio) and copy/paste the
    username/password. Don’t type them, copy/paste. Verify there isn’t
    an issue.
  2. Fire up the code (this is next for me b/c this would be the next
    easiest thing to do in my case) and step to line 31 to verify that
    everything is setup properly. Here is some info on how to do
    this. I understand that this may be impossible for you with this
    being on production so you might skip this step. If at all possible
    though, I’d set this up on my local machine and verify that there is
    no issue connecting locally. If I get this error locally, then I
    have a better chance at fixing it.
  3. Verify that Provider=SQLNCLI10 is installed on the production
    server. I would follow this SO post, probably the answer posted
    by gbn.
  4. You have other working websites? Are any of them classic asp? Even
    if not, I’d compare the connection string in another site to the one
    that you are using here. Make sure there are no obvious differences.
  5. Fire up SQL Server Profiler and start tracing. Connect to the site
    and cause the error then go to profiler and see if it gives you an
    additional error information.
  6. If all of that fails, I would start going through this.

Sorry I can’t just point to something and say, there’s the problem!

Good luck!

Community's user avatar

answered Mar 5, 2013 at 14:08

Mike C.'s user avatar

Mike C.Mike C.

3,0142 gold badges21 silver badges18 bronze badges

5

Have you ever tried SQL Server OLE DB driver connection string:

"Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;"

or ODBC driver:

"Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"

At least this is what I would do if nothing helps. Maybe you will be able to get more useful error information.

answered Mar 8, 2013 at 0:23

Slava's user avatar

SlavaSlava

1,0555 silver badges11 bronze badges

Have you tried to use the server IP address instead of the «(local)»?
Something like «Server=192.168.1.1;» (clearly you need to use the real IP address of your server)

In case you try to use the server IP address, check in the «SQL-Server configurator» that SQL Server is listening on the IP address you use in your connection. (SQL Server Configurator screenshot)

Other useful thing to check / try:

  • And check also if the DB is in the default SQL Server instance, or if it is in a named instance.
  • Do you have checked if the firewall have the TCP/IP rule for opening the port of you SQL Server?
  • Have you tried to connect to SQL Server using other software that use the TCP/IP connection?

Community's user avatar

answered Mar 9, 2013 at 17:56

Max's user avatar

MaxMax

7,3982 gold badges26 silver badges32 bronze badges

The SQL Server Browser service is disabled by default on installation. I’d recommend that you enable and start it. For more information, see this link and the section titled «Using SQL Server Browser» for an explanation of why this might be your problem.

If you don’t wish to enable the service, you can enable TCP/IP protocol (it’s disabled by default), specify a static port number, and use 127.0.01,<port number> to identify the server.

answered Mar 10, 2013 at 16:41

Paul Keister's user avatar

Paul KeisterPaul Keister

12.8k5 gold badges46 silver badges75 bronze badges

In line 31:

cmd.ActiveConnection = Application("C2M_ConnectionString")

How are you instantiating cmd?

Rather than the ConnectionString being wrong, maybe cmd is acting differently in the new environment.

Edited to add:

I see that you’ve gone from IIS 7 to IIS 8. To run Classic ASP sites on IIS 7 required manual changes to server defaults, such as «allow parent paths.» Is it possible that some of the needed tweaks didn’t get migrated over?

If you’re not running with Option Strict On, you should try that — it often reveals the source of subtle problems like this. (Of course, first you’ll be forced to declare all your variables, which is very tedious with finished code.)

answered Mar 5, 2013 at 23:53

egrunin's user avatar

egruninegrunin

24.6k8 gold badges49 silver badges93 bronze badges

1

You need to enable TCP/IP & Named Pipes in SQL Server Network Configuration.
enter image description here

answered Jun 15 at 17:14

Mr Kyaing's user avatar

Mr KyaingMr Kyaing

511 silver badge6 bronze badges

   Kleo

16.12.15 — 06:18

Здравствуйте!

База УПП 1.3.70.1, релиз платформы 8.3.6.2421. База РИБ (Центральная), в Периферийной все работает нормально.

База на SQL 2012, Сервер 1С 64-х разрядный.

так вот вылетает ошибка при проведении Требовании-накладной или Возврат переданных товаров и вылетает программа:

Ошибка СУБД:

Microsoft OLE DB Provider for SQL Server. Внимание! Произошла неустранимая ошибка 824. Запомните ошибку и время, когда она произошла, и обратитесь к системному администратору.

HRESULT=80004005, SQLSrvr=HY000, state = 1, severity=18, native=21, line=1

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

Опишу подробно:

1) Рестарт сервера 1С и SQL ничего не дает, или дает временно.

2) далее по поводу cf-к и т.д. в том, что памяти не хватает  — это тоже не по теме, т.к. сервер 64-х разрядный.

3) далее сделала следующие манипуляции, которые мне посоветовали:

— сделала бэкап с клиент-серверной рабочей базы;

— загрузила бэкап в другую клиент-серверную базу-копию;

— из этой копии выгрузила dt-ник;

— далее загрузила этот dt-ник в файловую базу;

— протестировала 1CD (нет ошибок), сделала тестирование из конфигуратора — Тестирование и исправление (проверка логической и ссылочной целостности)

— затем из файловой базы выгрузила dt-ник и загрузила его в рабочую клиент-серверную базу.

Делала до этого тоже самое помогло, но не надолго, только отличие было в том, что dt-ку выгружала и загружала снова в копию клиент-серверного варианта.

Сейчас сделала через файловую, как описала выше, жду результата, что будет.

А тем временем попробовала на копии клиент-серверного варианта запустить проверку в SQL с помощью следующего запроса:

ALTER DATABASE UPP

SET SINGLE_USER

WITH ROLLBACK IMMEDIATE;

GO

DBCC CHECKDB (‘UPP’, REPAIR_REBUILD) WITH NO_INFOMSGS

GO

Проверка выдала следующее:

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

Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). Не удалось обработать страницу (1:2541984).  Подробные сведения см. в других сообщениях об ошибках.

        Уровень исправлений для данной инструкции DBCC вызвал обход данного исправления.

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data) страница (1:2541984). Проверка (IS_OFF (BUF_IOERR, pBUF->bstat)) не пройдена. Значения равны 2057 и -4.

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

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). Страница (1:2541984) не обнаружена при просмотре, хотя на нее ссылаются родительская страница (1:2539467) и предыдущая страница (1:2541983). Проверьте наличие предыдущих ошибок.

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

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

Ошибка в таблице. Идентификатор объекта 279945065, идентификатор индекса 3, идентификатор секции 72058135223271424, идентификатор единицы распределения 72058134132817920 (тип In-row data). На страницу (1:2702132) отсутствует ссылка с предыдущей страницы (1:2541984). Возможна ошибка связывания цепочек.

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

CHECKDB обнаружил 0 ошибок размещения и 4 ошибок согласованности в таблице «_AccumRg23823» (идентификатор объекта 279945065).

CHECKDB обнаружил 0 ошибок размещения и 4 ошибок согласованности в базе данных «UPP».

repair_allow_data_loss — это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (UPP, repair_rebuild).

таблица «_AccumRg23823»  — это регистр накопления «НДС по партиям запасов»

И как и что исправить не знаю? Подскажите, пожалуйста!

   Kleo

1 — 16.12.15 — 06:22

Причина найдена, а вот как исправить это средствами SQL — не знаю. Впервые сталкиваюсь с прямыми запросами SQL. Подскажите, пожалуйста, что нужно сделать с индексами таблицы регистра накопления «НДС по партиям запасов» —  «_AccumRg23823»

   los_hooliganos

2 — 16.12.15 — 06:28

(1) Сделайте бекап. Удалите все индексы данного регистра. Пересохраните конфигурацию. Сделайте реиндексацию.

   zva

3 — 16.12.15 — 06:30

«repair_allow_data_loss — это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (UPP, repair_rebuild)»

Запуститу на копии DBCC CHECKDB (‘UPP’, REPAIR_ALLOW_DATA_LOSS) для начала…

   Kleo

4 — 16.12.15 — 06:35

(2) данные не потеряются, если удалить индексы?

Открыла ветку с индексами — там их 6 уникальных некластеризованных и 1 кластеризованный. Их просто удалить???

   Kleo

5 — 16.12.15 — 06:39

(3) да, хотела попробовать так сделать на копии. а данные не потеряются, если запустить такую проверку?

   los_hooliganos

6 — 16.12.15 — 06:48

(4) Потеряются только если кластерезованный индекс удалите напрямую :))

   Kleo

7 — 16.12.15 — 06:50

(6) так а как удалить правильно в SQL? Если можно, то пошагово, пожалуйста

   zva

8 — 16.12.15 — 06:51

(7) http://catalog.mista.ru/public/192648/

Только кластеризованный не трогайте

   Kleo

9 — 16.12.15 — 07:04

(8) я читала такую ссылку. в конце ссылки приводится две картинки.

Нахожу таблицу «_AccumRg23823», раскрываю ее, нахожу «Индексы» — далее нажимаю «Создать скрипт для индекса» — Используя CREATE — Новое окно редактора запроса

При этом открывается окно запроса с текстом запроса:

USE [UPP]

GO

/****** Object:  Index [_Accum23823_ByDims23843_RTRN]    Script Date: 16.12.2015 10:05:44 ******/

CREATE UNIQUE NONCLUSTERED INDEX [_Accum23823_ByDims23843_RTRN] ON [dbo].[_AccumRg23823]

(

    [_Fld23825RRef] ASC,

    [_Period] ASC,

    [_RecorderTRef] ASC,

    [_RecorderRRef] ASC,

    [_LineNo] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

Дальше что я должна сделать?

   los_hooliganos

10 — 16.12.15 — 07:08

(9) Дальше удаляйте, а потом пересоздавайте по скрипту.

А можно было просто пересохранить конфу. Она сама индексы пересоздаст

   Kleo

11 — 16.12.15 — 07:13

(10) нужно запускать запрос в (9) «Выполнить» или нет?

(10) что значит пересохранить конфу? можно подробнее?

   Ёпрст

12 — 16.12.15 — 07:23

Че паритесь ? Просто truncate table _AccumRg23823 и дальше пересчет итогов этого регистра

   Ёпрст

13 — 16.12.15 — 07:25

А блин, це же табличка с движениями.. Ну, тогда не выйдет с очисткой е1ё.

   Kleo

14 — 16.12.15 — 07:35

Сделала, как по ссылке Создала скрипты для индексов, просто вышло много окон с текстами запросов для 6 некластеризованных индексов и все. затем удалила эти 6 индексов. А как теперь их создать?

Затем пишут:

«Затем выполним поочередно скрипты по созданию индексов в открытых окнах, попутно закрывая их (чтобы ничего не забыть).»

Что это значит? Как сделать?

   los_hooliganos

15 — 16.12.15 — 07:52

(14) Выполнить запрос написанный в скрипте

   Kleo

16 — 16.12.15 — 08:02

(15) Т.е. по описанию в ссылке я должна сначала создать скрипты по 6 индексам, сохранить себе их данные, затем индексы удалить и создать их снова, скопировав запросы созданных скриптов, и нажать по каждому индексу выполнить. А при создании нового индекса выбирать те поля, которые указаны в скрипте? Так?

   Kleo

17 — 16.12.15 — 08:36

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

Неуточненные транзакции проходят откат. Предварительно выполнение отката: 0%.

Неуточненные транзакции проходят откат. Предварительно выполнение отката: 100%.

Это хорошо или нет?

   los_hooliganos

18 — 16.12.15 — 08:47

(17) Проверьте что коннект стоит к нужной базе.

   Kleo

19 — 16.12.15 — 09:02

(18) как это сделать?

все делала на копии. при загрузке базы провела документ, на котором вылетала база — провелся!

   los_hooliganos

20 — 16.12.15 — 09:20

(19) Там в отдельном поле видно название БД с которой вы работаете

   Kleo

21 — 16.12.15 — 09:32

(20) Спасибо большое за помощь!

А еще вопрос: какая может быть причина, что полетели индексы регистра накопления? Что могло послужить причиной?

   Kleo

22 — 16.12.15 — 10:47

А можно было по сути запустить реиндексацию таблиц информационной базы (по сути это и есть манипуляции с dt-ником)?

И можно еще спросить здесь же: эта проблема возникла в Центральной базе, а в Периферийной базе вообще можно запускать реиндексацию таблиц информационной базы? И вообще какое еще тестирование можно проводить в Периферийной базе?

   los_hooliganos

23 — 16.12.15 — 11:24

(22) Канешна можно. Индексы строго говоря не зависят от базы. Кроме кластерного индекса, тн Прайм Кей. Кластерный индекс это сортировка самой таблицы, столбец который сортируется и есть кластерный индекс.

Но в каждой БД, даже если 2 БД одинаковые с точки зрения 1С, сортировка внутри таблиц может быть разной.

   Kleo

24 — 16.12.15 — 11:31

(23) а в Периферийной какое тестирование можно запускать в  режиме Конфигуратора?

   Necessitudo

25 — 16.12.15 — 11:42

(24) Зачем периферийную трогать?

  

Kleo

26 — 16.12.15 — 13:06

(25) Я имею ввиду на будущее потом, вообще ее нужно тестировать? И если да, то какие проверки можно задавать?

  • Ошибка субд lost synchronization with server got message type d length 10000050
  • Ошибка субд login failed for user sa
  • Ошибка субд interface 0c733a7c 2a1c 11ce ade5 00aa0044773d with hresult 0x00040eda
  • Ошибка субд index key does not match expected index column
  • Ошибка субд hresult 80004005