WORK/MSSQL

MSSQL 병합복제 C#에서 동기화 작업 실행하기 merge replication how to sending to subcription PC a sync command From C#

memoriserf 2025. 3. 31. 10:51

구독자PC에서 끌어오기 방식으로 SQL Server Agent를 직접 컨트롤 하려면
SQLServer RMO , SMO , management.common , replication 같은 dll이 필요하다.

 

다만 이 레퍼런스는 SQL의 버전과 dll의 버전 등이 완전 일치해야 작동되며 작업환경이 제한적인 프로젝트인 경우 자유롭게 버전을 변경하지 못해 사용이 불가능하다.

 

때문에 T-SQL을 사용하여 SQL Server Agent의 job 자체에 명령을 내려 동기화 트리거를 실행하는 방식으로 간단히 사용할 수 있다.

 

필수 조건은 이미 SQL Server Agent의 작업이 있어야 한다.

 

 

구독자 PC의 서버에서 sql server agent란을 확인하면 작업이 제대로 작성되었는지 확인이 가능하다.

반드시 작업이 실행중이어야 한다.

 

 1.  DBConnection에 사용할 아이디가 msdb의 권한을 가지고 있어야 한다.

     그게 아니라면 접속 database를 직접 msdb로 지정한다.

 

 ex ) Data Source = IP; database = msdb; User ID= id;PASSWORD= pw

 

 

 2. USE msdb; EXEC sp_start_job @job_name

   job_name에는 위에 SQL Server agent에서 확인한 작업명을 그대로 넣어준다.

  사용db인 msdb를 확실하게 명시해준다.

 

 3. 제대로 실행됬는지 작업의 로그를 통해 확인한다.

 

 제대로 실행됬다면 우측 메시지에 succeeded 를 확인할 수 있다.