我尝试使用它们提供的存储过程来监控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.
我在任何地方找不到这个特殊错误都没有运气。有人可以帮忙吗?
答案 0 :(得分:0)
我怀疑tiny_tds可能未设置ANSI_DEFAULTS ON
,因此在没有NULL
或NOT NULL
规范的情况下创建的列默认为NOT NULL
。在执行proc。
SET ANSI_DEFAULTS ON
或SET ANSI_NULL_DFLT_ON ON