"102"와 "'sp_MS' 근처 구문이 잘못 되었습니다" 오류가 SQL Server 피어 투 피어 복제를 만들 때

증상

피어-투-피어 게시를 Microsoft SQL Server SQL 스크립트를 만들면 replication 에서 배포 에이전트가 실패 하 고 "근처 구문이 잘못 되었습니다" 오류 메시지가 생성 합니다.

이러한 오류 메시지는 에이전트 로그 파일을 사용 하 여 생성 되는 SQL 프로파일러 추적 또는 SQL Server 에이전트 작업 기록을 표시는 -출력 매개 변수가. 예를 들어, AdventureWorks2017 샘플 데이터베이스의 Production.product 테이블에 대해 INSERT 저장 프로시저를 실행 하 여 다음과 같은 오류 메시지가 생성 됩니다.

-SQL Server 에이전트 오류 메시지오류 메시지:'Sp_MSins_ProductionProduct' 근처의 구문이 잘못 되었습니다. (원본: MSSQLServer, 오류 번호: 102)도움말: http://help/102-프로필러 실패 없는 문을 "." 프로시저 이름과 스키마 사이경우 object_id (N '[dbo] [sp_MSins_ProductionProduct]', 'P') > 0[sp_MSins_ProductionProduct] [dbo] proc drop-에이전트 로그 오류 메시지 구독자에 연결 하는 타임 스탬프타임 스탬프가 초기화 중 에이전트 메시지 코드 102타임 스탬프. 'Sp_MSins_ProductionProduct ' 근처의 구문이 잘못 되었습니다. 타임 스탬프 범주: 명령원본: 명령 실패 했습니다.번호:메시지: 경우 > 0 rollback tran @@trancount 범주: NULL타임 스탬프원본: Microsoft SQL Server Native Client 11.0번호: 102메시지: 'sp_MSins_ProductionProduct ' 근처의 구문이 잘못 되었습니다.

참고: Sp_MSdel_ {문서}{문서를 (를) sp_MDupd_이러한 저장된 프로시저에 대해 생성 되는 다른 복제에 대 한 오류 메시지가 나타날 수 있습니다.

원인

이 문제는 Microsoft SQL Server Management Studio 17을 사용 하 여 기존 피어 투 피어 게시에 아티클을 추가할 때 발생 합니다. x. x. 이렇게 하면 복제를 "[dbo]" 스키마를 사용 하 여 저장된 프로시저 이름을 생성 합니다. 다음 예제와 같이 발행물 sp_addarticle 명령에 스크립트를 통해이 확인할 수 있습니다.

exec sp_addarticle @publication = N'Products', @article = N'Product', @source_owner = N'Production', @source_object = N'Product', ...

@ins_cmd = N'CALL [dbo].[sp_MSins_ProductionProduct]',

@del_cmd = N'CALL [dbo].[sp_MSdel_ProductionProduct]',

@upd_cmd = N'SCALL [dbo].[sp_MSupd_ProductionProduct]'

GO 

R다시 피어-투-피어 환경에서 복제 스크립트를 실행 sp_addarticle 논리 구문 분석 하는 마침표 (.)와 같은 잘못 된 호출 구문을 사용 하면 있는 "[sp_MSins_ProductionProduct] [dbo] 호출할."

해결 방법

이 문제를 해결 하려면 다음이 단계를 수행 합니다.

  1. "원인" 절에 나와 있는 것 처럼 모든 피어-투-피어 게시를 스크립팅 합니다.

  2. 저장된 프로시저 호출에서 "dbo" 스키마 접두사를 제거 하려면 g전역 다음 텍스트 찾기:ALL [dbo].[그런 다음이 다음 텍스트로 바꿉니다.ALL [

참고

  • 새 피어-투-피어 환경 설정 하는 경우 게시를 삭제 하 고 변경 스크립트를 재현할 피어-투-피어 환경에서이 문제에 대 한 가장 빠른 해결책이 될 수 있습니다.

  • 하나 또는 두 개의 테이블 실패 하는 경우에 게시에 문서를 복원 하는 다음 스크립트를 편집, 게시에서 해당 아티클을 삭제 하는 것이 좋습니다.

테이블 및 데이터 선택 옵션을 결정 합니다. 끊어진된 테이블 데이터베이스의 큰 부분을 나타내는 데이터 변경 사항을 포함 하는 경우 새로운 백업 복원 프로세스를 통해 피어-투-피어 환경에 다시 작성 하려고 하 고 피어-투-피어 마법사를 사용 하 여 토폴로지를 다시 만들려고 하는 것이 좋습니다.

@ins_cmd = N'CALL [sp_MSins_ProductionProduct]', @del_cmd = N'CALL [sp_MSdel_ProductionProduct]', @upd_cmd = N'SCALL [sp_MSupd_ProductionProduct]'

방지

기존 피어 투 피어 게시에 새로운 기사를 추가 하는 경우 아티클 속성 창을 열고 변경 내용을 저장 하기 전에 "[dbo]." 스키마 접두사를 제거 합니다.

문서 속성을 편집 하 고 "[dbo]." 스키마 접두사를 제거 합니다.

상태

Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×