SQL Server 2005 SP调用在SSMS中工作,但不使用tiny_tds

时间:2014-09-22 23:15:05

标签: sql sql-server sql-server-2005 tiny-tds

我尝试使用它们提供的存储过程来监控SQL Server 2005复制。

我可以在SSMS中运行以下内容并获取数据:

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

如果我使用tiny_tds运行相同的查询,我会得到以下结果:

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.

我在任何地方找不到这个特殊错误都没有运气。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我怀疑tiny_tds可能未设置ANSI_DEFAULTS ON,因此在没有NULLNOT NULL规范的情况下创建的列默认为NOT NULL。在执行proc。

之前尝试执行SET ANSI_DEFAULTS ONSET ANSI_NULL_DFLT_ON ON