0

我正在尝试使用它们提供的存储过程来监视 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.

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

4

1 回答 1

0

我怀疑 tiny_tds 可能没有设置ANSI_DEFAULTS ON,所以在没有NULLorNOT NULL规范的情况下创建的列默认为NOT NULL. 尝试执行SET ANSI_DEFAULTS ONSET ANSI_NULL_DFLT_ON ON在执行 proc 之前。

于 2014-09-22T23:39:03.723 回答