【问题标题】:Setting PublicationMonitor.ConnectionContext throws a NullReferenceException设置 PublicationMonitor.ConnectionContext 会引发 NullReferenceException
【发布时间】:2014-03-31 16:16:27
【问题描述】:

一开始我试过这个:

var conn = new ServerConnection(@"SMTDEV\SQL2008", "login", "password");
var pubMon = new PublicationMonitor("PRMDemoRep", "distribution", @"SMTDEV\SQL2008", "PRMDemo", conn);

如果我在第二行设置断点,我可以从即时窗口成功运行以下代码:

conn.ExecuteScalar("select 1");

所以我知道 ServerConnection 工作正常并且绝对不为空。其他参数都是字符串,所以那里应该没有问题,但是当我运行第二行时,我不断收到 NullReferenceException。

我还尝试使用 PublicationMonitor 的无参数构造函数,并且可以通过这种方式设置每个字符串属性,但是当我将 ConnectionContext 设置为我的 ServerConnection 时,我得到了 NullReferenceException。

有人知道为什么会发生这种情况吗?

编辑:我也刚刚使用 ReplicationMonitor 类尝试过这个,并且遇到了同样的问题。我试图将它指向多个服务器,但总是遇到 NullReferenceException。

【问题讨论】:

  • “SMTDEV\SQL2008”是您经销商的名称吗?您是否有机会使用远程分销商?
  • 另外,您能否在异常助手中查看详细信息...并看到它提供了任何其他详细信息?具体来说,检查 InnerException 中是否有其他详细信息。
  • Brandon,发布者和分发者都是 SMTDEV\SQL2008。但是,SMTDEV 不是我在其上运行代码的开发机器,所以......分发者相对于发布者来说不是远程的,但显然它对于开发机器来说是远程的。
  • @BrandonWilliams 不,没有其他细节,也没有内部异常。我几乎从 .net 开始就一直在编程,这是我第一次遇到这个异常,问题不是立即显而易见,完全是我的错。这次异常不是我自己的错(代码只有几行......我很确定我在这里没有遗漏任何东西)。所以我认为这可能是微软的一个错误。
  • 很难确定。我能够在我的测试环境中运行相同的代码并且它可以工作。您使用的是什么类型的复制?

标签: c# sql-server-2008 replication nullreferenceexception


【解决方案1】:

我遇到了同样的问题,我通过检查我使用的 dll 版本来修复它。我的项目引用了 2008 程序集(100/SDK 文件夹),但是我的本地共享 SQL 组件已升级到 2012。当我更改对 2012 程序集 (110/SDK) 的引用时,它起作用了。

希望这会有所帮助。

【讨论】:

  • 我不知道这是否能解决我的问题,这不是我现在要回去检查的问题,但即使这不是正确的答案可能是最接近这个问题的好答案的东西,所以我正在标记它:)
猜你喜欢
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2016-06-04
  • 1970-01-01
  • 2012-05-22
相关资源
最近更新 更多