인포베이스 변환 오류입니다. 주목!!! 마지막 구조 조정 후 데이터를 업데이트하는 동안 오류가 발생했습니다.

우리는 이사했다 새 서버. 그것에 SQL 및 1C. 예전에 비하면 훨씬 시원했다. 그리고 Gilev의 테스트에서도 이를 확인했습니다: 오래된 서버에서 10-15에 대해 39가 나왔으므로 구매 직후 데이터베이스를 이전하고 작업을 시작했습니다.

그러나 어느 시점에서 문제가 발생했습니다. 사용자는 이에 대해 불평하기 시작했습니다. 느린 작업. 서버와 서비스에 대한 특정 설정(별도의 게시물 주제)을 지정하고 재부팅 속도가 2분(다른 서버에서는 10에 도달)이기 때문에 서버를 다시 시작하기로 결정했습니다. 그런 다음 1C를 입력하면 다음 메시지가 나타납니다.

"주목!!! 데이터를 업데이트할 때 이후 마지막 구조 조정, 오류가 발생했습니다. 업데이트를 다시 시도하시겠습니까?" "설마"

"예" 버튼을 클릭하면 다음이 나타납니다.

"불완전한 구성 저장 작업이 감지되었습니다. 계속하려면 작업을 완료해야 합니다."

내가 하기로 결정한 첫 번째 일은 Managment Studio의 CHECKDB였습니다. 2시간 동안 기다린 후(500GB 데이터베이스) 모든 것이 정상입니다.

광대한 네트워크에서 동적 업데이트에서도 동일한 오류가 발생한다는 정보를 찾았습니다.

네트워크에서 제안된 솔루션은 즉시 도움이 되지 않았지만 다른 조치와 함께 결과를 얻었습니다. 그래서 내가 한 일:

해결책:

  1. 네트워크 솔루션에서 누락된 사항:

sp_configure '업데이트 허용', 1
재정의로 재구성
가다

2. 데이터베이스를 복구 모드로 전환

데이터베이스 세트 EMERGENCY, SINGLE_USER 변경

3. 데이터베이스 테스트를 수행합니다.

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. 데이터베이스를 복구 모드에서 해제합니다.

데이터베이스 세트 ONLINE, MULTI_USER 변경

5. 원칙적으로 받침대 자체에 모든 것이 괜찮다고 확신하면 2-4 점을 할 수 없습니다. 다음으로 SQL 프로파일러에서 두 개의 쿼리를 실행합니다.

FileName = 'commit'인 구성에서 삭제
FileName = 'dbStruFinal'인 구성에서 삭제

이 항목은 동적 업데이트를 담당합니다. 삭제하는 것을 두려워하지 마십시오.

데이터베이스의 작업 버전에서 쿼리:

Config WHERE FileName = 'commit'에서 * 선택

Config WHERE FileName = 'dbStruFinal'에서 * 선택

비어있을 것입니다.

6. 설정을 반환합니다.

sp_configure '업데이트 허용', 0
가다

7. 그 후 구성 프로그램을 시작하고 데이터베이스가 작동하기 시작했습니다.

또한, 베이스는 첫 번째 플래그를 제거한 후에 작동할 수 있습니다.

모래 상자

권한 2013년 9월 18일 오후 3시 24분

1C, 구성 복원 정보 기반 MS SQL을 사용하여

한 번에 문제가 발생했습니다. 저장소에서 구성을 업데이트할 때 오류가 발생하고 1C가 닫혔습니다.

나중에 밝혀지듯 구성 저장소는 파괴되었고 구성이 업데이트되면 데이터베이스 구성도 저장소에서 날아갔습니다. IB의 동적 업데이트 이전에 유사한 오류가 발생했습니다.

때문에 이 문제한 번 이상 발생하여 치료 옵션을 공유하기로 결정했습니다.

다음에 구성기를 실행할 때 오류가 발생했습니다. “주의!!! 마지막 구조 조정 후 데이터를 업데이트하는 동안 오류가 발생했습니다. 업데이트를 다시 시도하시겠습니까?" 대답이 예인 경우 "불완전한 구성 저장 작업이 감지되었습니다. 작업을 계속하려면 작업을 완료해야 합니다.” 그런 다음 응용 프로그램이 닫힙니다.

이 문제를 분석할 때 문제에 대한 여러 솔루션이 발견되었으며 각 솔루션은 서로 다른 경우에 작동합니다.

옵션 1(동일한 구성의 복사본이 있는 SQL 백업이 있는 경우):

IB 사본이 배포되고 다음 구성이 요청됩니다.
사용 GO DELETE FROM .. GO INSERT INTO .. ​​​SELECT * FROM .. GO
동시에 IS 구성이 저장된 테이블이 다시 채워집니다. 이 작업 후에 IS 테스트 및 수정을 수행하는 것이 좋습니다.

옵션 2(백업이 없는 경우):

이 옵션은 마지막 빨대로 처리되었습니다. 때문에 구성이 개발 중이었고 스토리지에 의존하여 백업에 대해 조금 잊어버렸습니다.
데이터베이스에서 "FileName" 열의 값인 dbStruFinal 및 commit에 의해 "Config" 테이블에서 두 개의 레코드가 삭제됩니다.

다음 요청이 이루어집니다.
에서 삭제 이동을 사용합니다. WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE 파일 이름 = "커밋"GO
이상하게도 기초가 살아납니다.

태그: 1s enterprise 8.2, SQL, 구성 복원

이 기사는 작성자가 아직 커뮤니티의 정회원이 아니기 때문에 댓글의 대상이 아닙니다. 저자가 수신한 후에만 저자에게 연락할 수 있습니다.

1C:Enterprise에서 작업할 때 다음 메시지가 나타날 수 있습니다. 새로운 버전 1C:Enterprise, 정보 베이스를 변환해야 합니다. 이 창이 나타나는 이유는 무엇이며 오류를 어떻게 고칠 수 있습니까?

대부분의 경우 창이 나타나는 이유는 최신 버전의 플랫폼에서 최신 버전으로 프로그램이 전환되었기 때문입니다. 다양한 플랫폼에서 정보 기반 1C자체 방식으로 형성되고 다른 구성을 취합니다. 수행해야 하는 모든 작업은 데이터베이스(구식 플랫폼에 해당하는 구조)를 최신 형식으로 변환하는 것입니다.

DB변환

이 절차는 간단하지만 먼저 생성하는 것이 좋습니다. 지원변환 중 오류가 발생한 경우(예: 컴퓨터가 꺼지거나 그 결과 정보 기반 1C, 프로그램 자체뿐만 아니라 손상될 수 있음). 그런 다음 다음 작업 알고리즘을 적용합니다.

  • 구성자 모드에서 데이터베이스를 엽니다.
  • 정보 베이스를 변환하라는 메시지가 표시됩니다. 보도 확인;

  • 구성기를 닫습니다.

데이터베이스를 엽니다. 문제 없이 시작해야 합니다. 변환 후에도 오류 창이 계속 나타나면 절차를 다시 시도할 수 있습니다. 이것이 도움이되지 않으면 1C 프로그래머에게 문의해야합니다. 때때로 작업을 수행하는 동안 프로그램이 정지될 수 있습니다. 지금은 아무 조치도 취할 필요가 없습니다.

중요한! 정보 기반 1C, 변형 최신 버전프로그램은 이전 버전에서 열 수 없습니다.

배경

새로운 정보 레지스터 "MessageTrackingLog"를 생성해야 했습니다. 구성에 추가하고 데이터를 로드했습니다. 그런 다음 최적화 작업이 왔습니다. 레지스터의 구조를 변경해야 했습니다. 그러나 거기에 없었습니다!

여기에서 모든 것이 명확합니다. 항목이 고유하지 않게 되었습니다. 삭제해야 합니다!

가장 간단한 방법은 다음과 같습니다.

NewRecord =RegistersInfo.MessageTrackingLog.CreateRecordSet(); NewRecord.Record();

이 방법을 사용하면 1C의 레지스터를 매우 빠르게 지울 수 있습니다(그러나 이것은 우리의 실수이기도 합니다).

실수

레지스터가 비어 있는 것으로 보이며 1C를 업데이트할 수 있습니다. 나는 당신을 놀라게하고 싶지 않지만 다시 오류가있을 것입니다.


오류는 무엇입니까:

정보 베이스를 업데이트하는 동안 치명적인 오류가 발생했습니다.
때문에:
고유하지 않은 값을 고유 인덱스에 삽입하려는 경우:
마이크로소프트 SQL 서버 Native Client 11.0: 개체 이름 "dbo._InfoRgChngR34546NG" 및 인덱스 이름 "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG"에 대해 중복 키가 발견되어 CREATE UNIQUE INDEX 문이 종료되었습니다. 중복 키 값은 (0x00000011,d7, , 4015년 9월 27일 10:22PM, 768404.00.00.00.00.00.00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, 상태=1, 심각도=10, 기본=1505, 줄=1

설명

SQL 구조를 이해하자. 레지스터가 있습니다. "MessageTrackingLog", SQL에서는 " _InfoR34546". 특수 처리 또는 "poke" 방법으로 확인할 수 있습니다(이를 수행할 필요는 없습니다. 테이블 이름이 이미 오류 텍스트에 표시되어 있기 때문입니다).

이제 무슨 일이 일어났는지 설명하겠습니다. 데이터를 레지스터에 로드한 다음 SQL에서 테이블에 " _InfoR34546". 1C의 코드로 테이블을 지웠을 때 이 데이터는 " _InfoR34546"이지만 테이블에 복사되었습니다. _InfoRgChngR34546". 이것이 문제가 되었습니다.

해결책

문제를 해결하려면 SQL 테이블 "_InfoRgChngR34546"을 지워야 합니다.

"Microsoft SQL Server Management Studio"의 예를 들어 말씀드리겠습니다. 우리는 간다 " Management Studio". 데이터베이스를 찾고 테이블 탭을 열고 아무 항목이나 클릭하고 "새 쿼리" 버튼을 누릅니다. 이제 쿼리를 입력합니다.

테이블 "_InfoRgChngR34546" 자르기

다른 테이블도 가질 수 있어요! 잊지 마요!

그리고 실행을 누르거나 F5를 누릅니다. 결과는 다음과 같아야 합니다.

이제 1C를 안전하게 업데이트할 수 있으며 오류가 발생하지 않습니다!

공유하다