2014-10-22 4 views
3

예약 된 유지 관리 창에서 SQL Server 2012 데이터베이스의 일부 인덱스를 수동으로 재구성/재구성했습니다. SQL Server 라이센스가 온라인 재구성/재구성을 허용하지 않기 때문에 오프라인 작업이었습니다.인덱스 재구성 작업을 취소해도 데이터베이스가 손상 될 수 있습니까?

그래서 저는 10,000,000 개의 행을 가진 아주 큰 테이블을 가지고 있습니다. 14 %의 조각화가 있었고 MS SQL Server Management Studio를 사용하여 인덱스를 재구성했습니다.

문제점은 재구성 작업을 완료하는 데 10 분 (녹색 마크와 성공한 기호)이 걸렸지 만 Management Studio 창이 아직 닫히지 않았습니다. 나는 3 시간과 그 이상을 기다리고있다. 실행중인 회전 휠이 여전히 회전 중입니다.

지금 어떻게해야합니까? 강제로 창을 닫으시겠습니까? Management Studio 창을 닫으시겠습니까? 나는 ActivityMonitor가 tempdb에 실행중인 쿼리가 여전히 있음을 보여주고 테이블을 손상시키는 것을 두려워하기 때문에 걱정됩니다.

현재 작업이 있다면 어떻게 찾을 수 있습니까? 필자의 목표는 프로덕션 데이터베이스에서 Management Studio를 안전하게 닫거나 닫지 않을지 찾기하는 것입니다.

참고 : 최근 백업 및 동일한 CPU/RAM을 사용하는 다른 컴퓨터에서 동일한 작업을 테스트했습니다. 완전한 작업을 위해서는 불과 15 분이 걸렸습니다.

모든 조언을 주시면 감사하겠습니다.

+0

이 시점에서 데드락이 있는지 확인 했습니까? 죽은 자물쇠가 없다면 이상적으로 약 15 분을 완료해야합니다. –

+0

활동 모니터에 교착 상태가 표시되지 않습니다. – user4168072

+1

sys.dm_exec_requests 및 sys.dm_os_waiting_tasks를보고 기다리고 있는지 확인하십시오. 그러나 일반적으로 질문에 대한 대답은 "아니오, 취소하면 데이터베이스가 손상되지 않습니다"입니다. 인덱스 유지 관리를 포함하여 모든 작업이 SQL Server에 기록됩니다. 당신이 취소 할 때, 그것은 (그것은 또한 시간이 걸릴 것입니다) 다 끝난 롤백해야합니다,하지만 그렇게하는 데 db를 손상시키지 않습니다. –

답변

0

아니요,하지만 인덱스가 손상 될 수 있습니다. 그렇다면 삭제하고 다시 빌드 할 수 있습니다.

+0

인덱스는 인덱스를 재구성 한 결과로 단순히 손상되지 않습니다. 인덱스가 손상되면 데이터베이스가 손상된 것입니다. 실제 손상이 발생한 경우 단순히 인덱스를 다시 작성하는 것이 아니라 DBCC CHECKDB를 실행해야합니다. –

+0

인덱스가 손상되면 엔진이이를 사용하지 않습니다. 당신은 그것을 삭제하고 다시 만들 수 있습니다. – kemals

+0

인덱스가 손상된 이유를 알고 싶을 것입니다. SQL Server는 자체적으로 엔진의 심각한 버그를 제외하고 인덱스를 임의로 손상시키지 않습니다. 손상된 색인이 발견되면 DBCC CHECKDB를 실행하여 하드웨어 및 소프트웨어 조건을 검사하고 데이터베이스를 백업에서 복원하는 것을 고려하십시오. 부패한 인덱스가 유일한 문제 일 가능성은 희박하며 실제 문제를 숨길 수 있습니다. –

1

색인 다시 구성은 항상 온라인 상태입니다. 또한 색인을 내부적으로 작은 배치로 재구성하여 자주 커밋합니다. 어느 순간이든 중단 될 수 있으며 다음 실행은 마지막 커밋 된 곳에서 다시 시작됩니다 (엄밀히 말하면 처음부터 다시 시작되지만 실제 작업은 중단 된 지점부터 다시 시작하여 중간 변경 없음). 중단되면 롤백 할 큰 백 로그가 없습니다. 다시 한번 말하지만, 이것은 REORGANIZE에 대해서만 사실입니다.

이제는 SSMS 차단에 대해 도움을 드릴 수 없으며 이미 이미 결정을 내 렸을 것입니다. 그러나 Management Studio에서 제공하는 기본 제공 비주얼 도구를 사용하지 않는 것이 더 빠를수록 삶의 질이 향상 될 것입니다. T-SQL 명령을 실행하십시오.

또한 많은 사람들은 Ola Hallengren의 색인 유지 관리 스크립트를 사용하는 것이 좋습니다.