2008-09-17 3 views
2

매우 큰 데이터 집합에 대해 월별 처리를 수행하는 크고 복잡한 일련의 저장 프로 시저 세트를 상속하려고합니다.대용량 t-sql 프로 시저를 어떻게 유지합니까?

VB6로 작성된 원래 프로세스와 일치하도록 디버깅하는 중입니다. 그들이 t-sql에서 다시 작성하기로 결정한 이유는 vb 프로세스에 며칠이 걸렸으며이 새로운 프로세스에는 몇 시간이 걸리기 때문입니다.

이 모든 것은 괜찮은 방법이지만, 지금은 원격으로 읽기/유지 관리 할 수있는 대량의 t-sql 코드 (1.5k + 회선)를 어떻게 만들 수 있습니까?

t-sql을 만드는 경험이 있다면 큰 고민은 아닙니다.

답변

4

먼저 .sql 파일로 가득 찬 디렉토리를 만들고 거기에서 유지하십시오. 이 .sql 파일 세트를 개정 제어 시스템에 추가하십시오. SVN이 잘 작동합니다. 이를 데이터베이스에로드하여 기존 데이터베이스를 겹쳐 쓰는 도구가 있어야합니다.

월별 처리 결과가 어떻게 나타나는지 테스트 데이터베이스와 기본 보고서가 있어야합니다. 테스트는 버전 제어하에 .sql 파일 형식이어야합니다.

이제 원하는만큼 proc을 리팩터링하고 나중에 올바른 기능을 확인하기 위해 테스트를 실행할 수 있습니다. 당신이 할 수있는

0

한 것은 당신이 (이전 및 현재 버전에 DIFF 사용) 절차의 변경 서식을 들어

2

을 검토 할 수 있도록 매우/소스 제어에 대한 모든 변경 사항을 저장하는 자동화 된 스크립트가 있습니다 SQL을 사용하면 성공한 무료 온라인 버전 http://www.sqlinform.com/과 데스크톱 버전도 사용할 수 있습니다.

SQLinForm 많은 서식 옵션과 모든 주요 데이터베이스 (오라클, SQL 서버, DB2/UDB, 사이베이스, 인포믹스, PostgreSQL을, MySQL을 등)에 대한 자동 SQL 코드 포매터입니다.

2

코드, 특히 들여 쓰기를 다시 포맷하여 시작하십시오.

그런 다음 SQL을 모듈화하십시오. 청크를 독립형 파일로 작고 설명 적으로 명명 된 프로 시저 및 함수로 가져옵니다. 이것만으로도 큰 SQL 파일에 대한 내 이해를 향상시키는 데 아주 효과적입니다.

1

가능한 한 SQL을 모듈화하고 필요할 때 기능을 유지 보수, 리팩터링 및 추가 할 수있는 일련의 테스트를 시도하십시오. 한때 나는 5000 개의 라인을 합친 Stored Proc를 계승 한 기쁨을 누 렸으며 여전히 그것에 대해 악몽을 꾼다. 프로젝트가 끝나면 저장 프로 시저를 인쇄하여 그 과정에서 X 트리를 비웃는 웃음을 표시합니다. 우리 회사 중 하나가 주간에 일어 서서 세션을 끝내면서 끝까지 끝내고 건물 전체를 뒤덮었습니다. 저장 프로 시저를 작성하고 유지 관리하지 않는 방법의 예입니다.

2

ApexSQLScript는 전체 데이터베이스를 스크립팅하기위한 훌륭한 도구입니다. 그런 다음 소스 제어로 확인하고 변경 사항을 관리 할 수 ​​있습니다.

또한 sprocs를 문서화하면 sys.sql_modules의 소스 코드에 대한 데이터를 사용하여 일관되게 sprocs에 대한 정보를 얻을 수 있습니다. 태그 등을 사용하여 하위 시스템을 도울 수 있습니다.

또한 스키마 (또는 다중 데이터베이스)를 사용하십시오. 이는 데이터베이스를 논리 단위로 나눌 수있게 해주 며 아키텍처 문제를 지적합니다.

큰 코드까지 저는 최근에 SQL2005 CTE 기능이 많은 중첩 된 쿼리 (심지어 재귀가 아닌)로 코드를 관리하는 데 매우 유용하다는 것을 알았습니다. 중첩 및 들여 쓰기를 관리하는 대신 CTE를 선언하고 구축 한 다음 최종 명세서에서 사용할 수 있습니다. 또한 중첩 된 중복 쿼리 및 열을 제거하는 것이 훨씬 쉬워 진 것처럼 리팩토링에 도움이됩니다.

큰 코드베이스를 관리하고 어두운 모서리를 없애려면 저장된 Procs와 UDF가 필수적입니다. 뷰가 매개 변수화되지 않았기 때문에 뷰를 찾지 못했습니다 (결과 세트가 작 으면 UDF를 사용할 수 있습니다).

0

확실히 무료는 아니지만 일관된 방식으로 T-SQL 형식을 유지하기 위해 Redgate Software의 SQL Prompt은 매우 편리합니다. proc의 구문이 맞으면, 몇 번의 키 스트로크 (Ctrl + K, Y)가 모든 것을 즉시 재 포맷 할 것입니다. 옵션을 사용하면 SQL의 형식을 제어 할 수 있습니다.