2

서버에서 동시에 실행하려는 많은 procs가 있습니다. 외부 클라이언트와의 연결에 의존하지 않고 서버에서 모두 이상적입니다.SQL Server 2005에서 여러 SQL 작업 스폰하기

이러한 모든 기능을 실행하고 동시에 실행할 수있는 옵션은 무엇입니까 (추가 작업을 수행하기 위해 모든 프로세스가 완료 될 때까지 기다릴 필요조차 없습니다)? 각각 해당 SP를 시작하는 데

  • 이 에서 클라이언트를 여러 연결을 시작 :

    나는 생각했다.

  • 각 SP에 대한 작업을 설정하고 SQL Server 연결 또는 SP에서 작업을 시작합니다. 추가 실행을 OSQL 할 수있는 동등한를 시작할 수 xp_cmdshell을 사용
  • whetever
  • SSIS - 나는 내 고객가는 얼마나 액세스 확실하지 않다 때문에, 패키지가 동적으로 더의 SP를 처리하기 위해 쓸 수 있는지 확인하기 위해 필요 작업 및 cmdshell 경우

생산에 도착, 나는 아마

SSIS 좋은 옵션이 될 수 ... DBA가에서 권한 수준 문제로 실행거야 - 나는 테이블 - 수있는 경우 SP 목록을 운전하십시오.

이것은 데이터웨어 하우스 상황이며 작업은 대부분 독립적이며 별에 NOLOCK이 보편적으로 사용됩니다. 이 시스템은 8-way 32GB 머신이므로 문제가 발생하면 다시로드하고 다시 확장 할 것입니다.

기본적으로 레이어 1에는 프로세스 수가 적고 기본적으로 이미로드 된 모든 사실/크기에 따라 달라집니다 (효과적으로 별은 레이어 0입니다. 예, 불행히도 모두 필요합니다. 로드 됨), 레이어 2는 레이어 1의 일부 또는 전체에 의존하는 여러 프로세스가 있으며 레이어 3에는 레이어 2의 일부 또는 전체에 의존하는 여러 프로세스가 있습니다. 이미 테이블에 종속성이 있으며 처음에는 특정 레이어의 모든 procs를 레이어 내에서 직교하기 때문에 동시에 시작합니다.

+0

C#에서 패키지를 동적으로 빌드하지 않으면 사전에 병렬 수준을 결정하고 SQL 실행 작업의 스레드 중 하나에서 특정 procs를 강제 실행하는 것과 관련된 일종의 테이블 구성 해킹이 필요할 수 있습니다 '... 희망은 이해가된다. 나를 찾지 못한다면 나를 이메일로 보낸다. – Codewerks

+0

그래, 아키텍처의 상당 부분이 은행 협약에 의해 결정되며 패키지를 동적으로 구축 할 수있다.). 그러나 우리는 단지보아야 할 것이다. CLR을 사용할 지 확신 할 수 없습니다. –

답변

1

, 나는 그들로 비동기를 프로세스를 시작 C#을 관리 콘솔 프로그램을 만들어 실행될 수 있으며 연결을 추적합니다.

2

SSIS는 선택 사항입니까? 병렬 실행 SQL 태스크로 간단한 패키지를 작성하여 저장된 procs를 동시에 실행할 수 있습니다. 그러나 저장된 procs가 무엇을하는지에 따라이 작업을 병렬로 시작할 수도 있고 그렇지 않을 수도 있습니다 (예 : 모두가 동일한 테이블 레코드에 액세스하는 경우 잠금이 해제 될 때까지 기다려야 할 수도 있습니다)

+0

SSIS는 좋은 옵션 일 수 있습니다. 고객이 프로덕션 환경에 얼마나 많은 액세스 권한을 부여 할 지 확신 할 수 없기 때문에 SP 목록을 테이블로 구동 할 수 있습니다. 이것은 데이터웨어 하우스 상황이며 작업은 대부분 독립적이며 NOLOCK은 별에 보편적으로 사용됩니다. 시스템은 8 way 32GB 기계입니다 –

1

어느 시점에서 나는 이것을 수행하는웨어 하우스 관리자가있는 Acumen Advantage으로 알려진 제품에 대해 일부 아키텍처 작업을 수행했습니다.

기본 전략은 sprocs 및 해당 종속성 목록이있는 제어 DB를 갖는 것입니다. 종속성을 기반으로 Topological Sort을 실행하여 실행할 순서를 지정할 수 있습니다. 이렇게하려면 종속성을 관리해야합니다. 저장 프로 시저의 모든 선행 작업은 실행 전에 완료해야합니다. 여러 스레드에서 순서대로 sprocs를 시작하는 것은 단독으로 이것을 수행하지 않습니다.

구현은 머리에 SSIS 기능을 상당 부분 노크하고 다른 스케줄러를 구현하는 것을 의미합니다. 이것은 제품에 대해서는 괜찮지 만 맞춤형 시스템에 대해서는 아마도 과도 함입니다.간단한 해결책은 따라서이다 :

당신은 하나의 SSIS 패키지 (때로는 주제 지향 ETL라고도 함) 차원에서 수직으로 ETL을 구성하여보다 결이 거친 수준에서 종속성을 관리하고 소요 sprocs가의 설정할 수 있습니다 추출에서부터 차원 또는 팩트 테이블 생성에 이르는 데이터 일반적으로 차원은 대부분 사일로 처리되므로 상호 의존성은 최소화됩니다. 상호 의존성이있는 곳에서는 차원 (또는 팩트 테이블)로드 프로세스를 업스트림에 필요한 모든 것에 종속시킵니다.

각 로더는 상대적으로 모듈화되어 있으며로드 프로세스를 병렬로 시작하고 SSIS 스케줄러가이를 처리하도록하여 유용한 병렬 처리 수준을 얻습니다. 종속성에는 약간의 중복성이 포함됩니다. 예를 들어, ODS 테이블은 완료되는 차원로드에 종속되지 않을 수 있지만 업스트림 패키지 자체는 완료되기 전에 차원 스키마로 구성 요소를 바로 가져옵니다. 그러나 이것은 다음과 같은 이유로 실제로 문제가 될 가능성이 없습니다 :

  • 로드 프로세스는 아마 그 동안
  • 에서 실행할 수있는 다른 작업을 많이 가지고 가장 자원이 부족한 작업은 거의 확실 할 것이다 사실 테이블이로드되며, 대부분 서로에 의존하지 않습니다. 종속성이있는 경우 (예 : 다른 테이블의 내용을 기반으로하는 롤업 테이블) 어쨌든이를 피할 수는 없습니다.

XML 파일에서 모든 구성을 가져 오도록 SSIS 패키지를 구성 할 수 있으며 위치는 환경 변수에서 외부로 제공 될 수 있습니다. 이런 종류의 일은 Control-M과 같은 스케줄링 시스템으로 상당히 쉽게 구현 될 수 있습니다. 수정 된 SSIS 패키지는 비교적 적은 수작업으로 배포 할 수 있음을 의미합니다. 프로덕션 직원은 저장 프로 시저와 함께 배포 할 패키지를 수령 할 수 있으며 SSIS 패키지의 구성을 수동으로 구성 할 필요없이 환경별로 기본 설정 파일을 유지 관리 할 수 ​​있습니다.

+0

질문 업데이트 중입니다. –

+0

둘 이상의 개발자 및 여러 소스 시스템이 잠재적으로있을 경우 주제 중심 ETL 아키텍처에서 유지 보수를받을 수도 있습니다. – ConcernedOfTunbridgeWells

1

이 서비스 브로커를보고 할 수 있습니다 그것은 활성화 저장 프로 시저의 ... 옵션이 될 수도 ... 결국

+0

나는 확실히 그것을 옵션으로 추가 할 것이다. –