답변:
(원래 정기적으로 질문했지만 올바른 방법을 찾았습니다-감사합니다 BrentO)
아뇨.
나는 지금 ServerFault 에서이 문제를 여러 번 보았으며 좋은 조언을 통해 많은 사람들에게 다가 가고 싶습니다. 사람들이 이런 식으로 일을한다면 눈물을 흘리면 기꺼이 제거하겠습니다.
자동 축소는 활성화 된 매우 일반적인 데이터베이스 설정입니다. 데이터베이스에서 여분의 공간을 제거하는 것이 좋습니다. 자동 축소가 긍정적으로 악하다는 것을 모르는 많은 '무의식적 DBA'가 있습니다 (TFS, SharePoint, BizTalk 또는 기존의 오래된 SQL Server를 생각하십시오).
Microsoft에서 SQL Server 저장소 엔진을 소유하고 자동 축소 기능을 제거하려고했지만 이전 버전과의 호환성을 유지해야했습니다.
자동 수축이 왜 그렇게 나쁩니 까?
데이터베이스가 다시 커질 것이므로 왜 축소해야합니까?
나는 블로그 포스트를 잠시 동안 수행했는데, 여기에는 SQL 스크립트의 원인이되는 문제를 보여주고 좀 더 자세히 설명하는 예제 스크립트가 있습니다. 자동 축소를 참조하십시오 – 끄십시오! (내 블로그에는 광고 나 정크가 없습니다). 때때로 유용하고 필요한 로그 파일 축소와 혼동하지 마십시오.
데이터베이스 설정을보고 자동 축소 기능을 해제하십시오. 정확히 같은 이유로 유지 관리 계획도 축소해서는 안됩니다. 동료들에게 말씀을 전하십시오.
편집 : 두 번째 대답을 상기 시켜서 이것을 추가해야합니다. 축소 작업을 중단하면 손상을 일으킬 수 있다는 일반적인 오해가 있습니다. 아닙니다. 예전에는 SQL Server에서 축소 코드를 소유했습니다. 중단 된 경우 현재 페이지 이동을 롤백합니다.
도움이 되었기를 바랍니다!
물론 바울이 옳습니다.
모든 DB 및 해당 자동 축소 설정을 참조하십시오. 데이터베이스가 많으면 몰래 들어갑니다.
sp_msforeachdb @command1 = 'Select ''[?]'',DATABASEPROPERTYEX(''?'',''IsAutoShrink'')'
이것은 dmv의 어딘가에 있습니다 .... 궁금합니다.
"안전하지 않은"것은 아닙니다. 아무것도 손상시키지 않습니다.
그러나 요청이 오래 걸리기 전에 데이터베이스가 중단되고 값 비싼 재배치 연습을 시작하기로 결정할 수있는 프로덕션 환경에는 권장되지 않습니다. 백업과 같은 다른 유지 관리 작업과 함께 일정 축소 작업을 사용하는 것이 훨씬 좋습니다 (실제로 백업 후에는 트랜잭션 로그에서 더 많이 발생 함). 또는 확장 문제가없는 한 전혀 축소되지 않습니다. 사용하지 않은 할당 된 공간이 특정 비율이나 고정 크기를 초과 할 때 알 수 있도록 항상 모니터를 설정할 수 있습니다.
IIRC이 옵션은 Express를 제외한 모든 MSSQL 버전의 모든 데이터베이스에 대해 기본적으로 해제되어 있습니다.
TechNet에는 SQL 유지 관리에 대해 자세히 설명하는 백서가 있습니다.
이 비디오 자습서를 확인하십시오 ....
Paul Randal이 축소 및 자동 축소가 데이터베이스에 심각한 조각화 문제를 일으킬 수있는 방법을 보여줍니다. http://wtv.watchtechvideos.com/topic194.html