2014-09-22 2 views
0

SQL Server 2005 복제가 제공하는 저장 프로 시저를 사용하여 복제를 모니터링하려고합니다. 나는 다음과 같은 얻을 내가 tiny_tds를 사용하여 동일한 쿼리를 실행하면SQL Server 2005 SP 호출은 SSMS에서 작동하지만 tiny_tds를 사용하지 않습니다.

exec sp_replmonitorhelpsubscription 
    @publisher = 'publisher', @publication = 'publication', @publication_type = 0 

:

은 내가 SSMS에서 다음을 실행하고 데이터를 얻을 수 있습니다

mssql = TinyTds::Client.new(
     :dataserver => config[:host], 
     :port => config[:port], 
     :username => config[:username], 
     :password => config[:password], 
     :database => db 
    ) 
result = mssql.execute("exec sp_replmonitorhelpsubscription @publisher='publisher', @publication='publication', @publication_type=0") 

........ .......

MSSQLCheck WARNING: query did not complete: Cannot insert the value NULL into column 'publication_id', table 'tempdb.dbo.#tmp_replication_monitordata________________________________________________________________________________________000000001A64'; column does not allow nulls. INSERT fails. 

어디서나이 특별한 오류를 발견하지 못했습니다. 누구든지 도와 줄 수 있습니까?

답변

0

tiny_tds가 ANSI_DEFAULTS ON으로 설정되어 있지 않으므로 NULL 또는 NOT NULL 사양이없는 열이 기본적으로 NOT NULL으로 설정 될 수 있습니다. proc을 실행하기 전에 SET ANSI_DEFAULTS ON 또는 SET ANSI_NULL_DFLT_ON ON을 실행 해보십시오.

+0

나는 혼자서 그 것을 알아 내지 못했지만 그게 문제였습니다. 고마워요! – numb3rs1x