Integration Services를 사용하지 않고 유지 관리 계획을 내보낼 수 있습니까?


12

SQL Server 인스턴스에서 간단한 유지 관리 계획을 내보내려고합니다.

소스 제어로 내보내기를 확인하고 내 보낸 유지 보수 계획을 기능적으로 동일한 인스턴스에 적용하려고합니다.

StackOverflowSQL Server 초보자 는 Integration Services를 사용하여 유지 관리 계획을 내보내는 것이 좋습니다.

내보내기 대상에서 Integration Services에 연결하려고하면 다음 오류가 발생합니다.

"WEBSERVER"컴퓨터에서 Integration Services 서비스에 연결하지 못했습니다. 다음 오류가 발생했습니다. 지정된 서비스가 설치된 서비스로 존재하지 않습니다.

이 상자는 소비자 응용 프로그램에 데이터를 제공하는 데만 사용되므로 WEBSERVER에서 Integration Services를 사용하지 않도록 선택했습니다. WEBSERVER의 모든 데이터는 백엔드 인스턴스에서 복제됩니다. 백엔드 인스턴스에서 데이터를 처리하는 데 Integration Services가 많이 사용됩니다.

Integration Services를 사용하지 않고 유지 관리 계획을 내보내는 문서화 된 방법이 있습니까? Microsoft가 지원합니까?

답변:


10

유지 관리 계획은 SQL Server에 저장된 다른 SSIS 패키지와 마찬가지로 msdb.dbo.sysssispackages에 저장됩니다. MSDB의 SSIS 패키지 추출 에 대한 편리한 게시물이 있습니다.


이것은 SSIS가 완전히 설치되어있는 경우에만 작동합니다.이 방식 dtutil은 기본적으로 제공되지만 기본적으로는 비활성화 되어 있기 때문 입니다. 유지 관리 계획에서 기본적으로 SSIS의 거의 모든 기능을 사용하더라도 일부 버전의 SQL Server (예 : Web Edition)에서는 SSIS를 완전히 설치할 수 없습니다. (그러나, 두 가지 버전의 SQL Server가 있다고 가정하면이 문제를
해결할 수있는 해킹이

3

이를 수행 할 수있는 방법이 있습니다.

OP와 같이 두 개의 SQL Server 인스턴스가 있고 그 중 하나에는 SSIS가 설치되어 있고 다른 하나는 설치되어 있지 않다고 가정합니다 (예 : SQL Server Web Edition 인 경우).

사용자 유지 보수 계획 행을 hobbled 서버에서 비 hobbled 서버로 복사하는 저장 프로 시저를 작성하십시오. 관련 행은 다음과 같습니다.

SELECT name 
FROM msdb.dbo.sysssispackages 
WHERE packagetype = 6

이 SP를 작성하여 일치하는 행이있는 행을 id먼저 삭제 한 다음 최신 버전 (또는 UPDATE일치하는 ids, INSERT누락 된 ids 등)을 삽입해야합니다. 그리고 한쪽 또는 다른쪽에 연결된 서버를 설정해야 두 서버를 모두 처리하는 SQL을 작성할 수 있습니다.

실제로 유지 보수 계획에서이를 정기적으로 호출 할 수 있습니다. 예를 들어, 유지 보수 계획이없는쪽에 모든 유지 보수 계획을 백업 할 수 있습니다.

이것은 물론 거대한 핵이지만 실제로 작동합니다. (데이터가 msdb.dbo.sysssispackages실제로 다른 서버 인스턴스간에 호환되는 것처럼 보이기 위해서는 SQL Server의 버전 번호가 양쪽에서 동일하다는 것이 매우 중요하다고 생각합니다.)

물론 항상 SSIS 데이터베이스 테이블에서 관련 행을 직접 백업 할 수 있습니다. 어쨌든 원래 질문에 대한 완전한 대답으로 작동합니다. 언급 한 바와 같이, 이는 SSIS를 전제로하는 것과는 아무런 관련이 없습니다. 유지 보수 계획을 전제로합니다!

따라서 지원되는 경량 방법으로 시스템의 어느 곳에서나 SSIS없이 작동합니다. 위에서보다 복잡하고 해킹이 많은 방법의 장점은 베어 데이터 행뿐만 아니라 표준 형식으로 내 보낸 계획을 제공한다는 것입니다. 나중에 다른 버전의 SQL Server로 가져올 가능성이 훨씬 높습니다.


1

나는 정확히 같은 문제로 어려움을 겪고 있습니다. 주요 테이크 아웃은 다음과 같습니다.

WEBSERVER에 통합 서비스가 필요하지 않습니다. 문서화 된 방법 중 하나는 DTUTIL을 사용하는 것입니다. Integration Services가 설치되어있는 SQL Server (모든 엔터프라이즈 기능이 포함 된 무료 개발자 에디션)를 사용하면 원본에서 대상으로 SQL Server 유지 관리 패키지를 복사 할 수 있습니다. 패키지의 원본 또는 대상이 아닌 경우에도 예 A.

예 A : SQL Server에서 실행 DTUTIL MySSISServerA은 에서 SQL 유지 관리 패키지를 복사 MySourceServerBMyDestServerC .

DTUTIL /SQL "Maintenance Plans\Nightly Maintenance" /copy  sql;"Maintenance Plans\Nightly Maintenance" /sourceserver MySourceServerB /destserver MyDestServerC /Q

주의 사항 ANY= 동일한 버전 인 경우 DTUTIL은 계획을 vCurrent로 업그레이드합니다
billinkc

좋은 지적입니다! 그러나 업그레이드는 우리가하는 일에 도움이 될 수 있습니다. 내가 좋아하는 것은 SQL 2008에서 계획을 만들고 그 계획을 SQL 2008, 2008 R2, 2012,2014, 2016으로 복사 / 업그레이드하는 것입니다.
Sting

0

살펴보십시오 :

한 서버에서 다른 서버로 유지 관리 계획을 전송 (복사)하는 방법 Sreekanth Bandarla 제작

말을 바꾸고 요약하려면 :

  1. SSMS에서 "Database Engine ..."에 연결하는 대신 동일한 서버 이름으로 "Integration Services ..."에 연결하십시오.

  2. '저장된 패키지 / MSDB / 유지 관리 계획'으로 이동하십시오.

  3. 모든 유지 보수 계획이 있습니다. 마우스 오른쪽 버튼을 클릭하여 내보내십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.