2014-02-18 2 views
1

비슷한 스키마를 사용하는 여러 서버 (SQL Server 2008)에 여러 데이터베이스가 있습니다. 나는 그들 각각에 대해 Stored Procedure를 실행하고 싶다. 지금 당장 SQL Server 관리 스튜디오를 통해 모든 서버에서 하나씩 실행해야합니다.여러 서버의 여러 데이터베이스에서 저장 프로 시저 실행 SQL Server

모든 데이터베이스에서 SP를 한 번만 실행할 수있는 SQL Server Management Studio의 가능성/옵션이 있습니까?

+0

나는 이것을 MS Access와 연결 문자열 및 ADO 테이블을 사용하여 해킹했습니다. –

+0

@RajMore .. 당신이 그것을 위해 응용 프로그램을 만들었다는 뜻입니까? 내게 세부 사항을 제공 할 수 있습니까? –

+0

서버의 텍스트 파일을 거쳐 SQLCMD.EXE를 사용하는 일괄 스크립트 또는 PowerShell 스크립트를 작성할 수 있습니다. 솔루션에 관심이 있으면 게시하십시오. –

답변

2

sp_MSForEachDB 저장 프로 시저를 사용하면 동일한 서버의 여러 데이터베이스에서 실행할 수 있어야합니다.

+1

여러 서버에서 실행할 수있는 옵션이 있는지 확실하지 않습니다. –

+0

어떻게 사용할 수 있습니까? –

+0

EXEC sp_msforeachdb " IF '?' BEGIN EXEC sp_whatever_you_want_to END " http://stackoverflow.com/questions/509189/help-with-sp-msforeachdb-like-queries[/link ('DB', 'to', 'exclude') ] –

3

그룹 쿼리를 사용하여 둘 이상의 서버에 대해 스크립트를 실행할 수 있습니다. Look here

가 그럼 난 당신이 할 수있는 파워 쉘 또는 배치 스크립트를 작성할 수 있습니다 확신 둘러보고 @Ram

2

에 의해 언급 된 sp_MSForEachDB를 사용하지만 배울 시간이 없어, 구축 및 테스트 하나.

  • 귀하의 서버 목록을 대체

    1. 가 SSMS에 아래의 쿼리를 붙여 넣기하고 실행 SQL 및 배치 스크립트

      그래서 난에서 행복 해요 언어로 그것을 할 수 있습니다

    2. 실행할 스크립트가 들어있는 파일의 경로 (예 : YourSQLScript.SQL 바꾸기)
    3. 로그 파일 경로 (예 : YourOutputLog.TXT 바꾸기)

당신은 당신의 출력 파일이 예에서는 그래서

WITH ServerList As (
SELECT 'Server1' ServerName UNION ALL 
SELECT 'Server2' UNION ALL 
SELECT 'Server3' UNION ALL 
SELECT 'Server4' UNION ALL 
SELECT 'Server5' 
) 

SELECT 
'SQLCMD -S ' + ServerName + ' -E ' + ' -i C:\YourSqlScript.SQL -o C:\YourOutputLog.TXT' 
From ServerList 
UNION ALL 
SELECT 'PAUSE' 

파일 C에 서버를 로그인 할 스크립트를 변경하고 시작 SELECT @@SERVERNAME을 추가 할 수 있습니다 : \ YourSqlScript.SQL

(이 제공 RAM에 감사합니다)

SELECT @@SERVERNAME 
EXEC sp_msforeachdb 'USE [?]; SELECT '?'; EXEC p_YourStoredProcedure;' 

: 아마 같은 것을 포함해야

는 (당신은 확실히 처음으로 하나의 데이터베이스에이 스크립트를 테스트해야합니다)

  1. 복사 출력 한 후 텍스트 파일에 붙여 넣습니다. 텍스트 파일을 MyFirstBatchFile.CMD로 저장하십시오. 난 그냥 비행에 구축 어떻게 할 수있는 당신을 보여 -이 처음 작동하지 않을 : (\ YourOutputLog.TXT C)를

을 두 번 출력 파일을 확인이 파일

  • 을 클릭 끝내라. 첫 번째 오류가 발생하면 앉아서 스스로 해결할 수 있는지 확인하십시오.

    정기적으로이 작업을 수행해야하는 경우 자동화 방법에 대해 생각해 볼 수 있습니다.예를 들어 서버 목록을 자동으로 가져 오는 방법이 있습니다 (힌트 : SQLCMD -L)

    여러 서버를 정기적으로 관리하려면 Powershell을 사용해야합니다.

  • +0

    다음은 좋은 PowerShell/SQL 참조가 필요하지만 맨 아래부터 시작해야합니다. https://www.simple-talk.com/sql/database-administration/the-posh-dba---sqlpsx-sql-server-powershell- 확장/ –

    3

    프로그래밍 방식으로 수행하지 않으려면 두 가지 방법이 있습니다.

    1) SSMS에서 등록 된 서버를 사용하십시오. 각 대상 데이터베이스는 서버 그룹 내 등록 된 서버로 만들 수 있습니다. 그런 다음 서버 그룹을 마우스 오른쪽 단추로 클릭하고 "새 쿼리"를 선택할 수 있습니다. 이 쿼리는 그룹의 모든 등록 된 서버에 대해 실행됩니다. This is explained in detail on MSSQLTips.

    2) SQL Multi Script은이 사용 사례를 충족시키기 위해 Red Gate에서 개발 한 전용 도구입니다. 그러나 이것은 SSMS에 통합되지 않습니다.

    +0

    +1 등록 된 서버 트릭. –

    관련 문제