【问题标题】:Unable to obtain a new server anchor无法获取新的服务器锚点
【发布时间】:2012-07-02 11:16:34
【问题描述】:

我收到错误:

无法获取新的服务器锚点。确保您可以建立到服务器数据库的连接并且正确指定了 DbServerSyncProvider 的 SelectNewAnchorCommand 属性。

在 Windows Mobile 中将 SQL Server DB 与 Compact DB 同步时发生这种情况:

Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()

【问题讨论】:

  • 你在连接什么?双方(您的设备和服务器)是否支持同步?
  • 我在 Visual Studio 2008 中制作了一个智能设备项目。我使用设计器向导在 SQL Server DB(存在于其他计算机)和 Compact DB(存在于当前应用程序)之间创建同步。向导使用 WCF 服务库与服务器 DB 进行交互。当我更改 WCF 的 app.config 中的连接字符串时出现上述错误。
  • 如果您不更改连接字符串,它是否有效?如果您使用 windows 集成安全连接到您的 sql server,wcf 服务在哪个帐户下运行?

标签: windows-mobile synchronization microsoft-sync-framework


【解决方案1】:

我在 Visual Studio 2008 中制作了一个智能设备项目。我使用设计器向导在 SQL Server DB(存在于其他计算机)和 Compact DB(存在于当前应用程序)之间创建同步。向导使用 WCF 服务库与服务器 DB 进行交互。当我更改 WCF 的 app.config 中的连接字符串时出现上述错误。

首先让我感到震惊的是设备无法连接到您的服务器数据库。如果设备本身没有被授权建立与服务器。

使用这个不同的连接字符串,你可以直接连接到服务器(不使用同步)吗?

示例:

Private Function DatabaseConnect(ByVal connection As String) As DateTime
  Dim dateTime As DateTime = New DateTime(1900, 1, 1)
  Dim obj As New Object()
  Using cmd As New SqlCommand("SELECT GETDATE();", New SqlConnection(connection))
    cmd.Connection.Open()
    obj = cmd.ExecuteScalar()
  End Using
  If (Not obj Is DBNull.Value) Then
    dateTime = DirectCast(obj, DateTime)
  End If
  Return dateTime
End Function

另一件事:您要连接的其他数据库是否支持同步?我们这里有多个数据库,包括一个较旧的 SQL 2000 数据库。它不支持同步。

尝试简化您的项目以缩小发生错误的范围。

目前,使用向导、同步和 WCF 有太多未知数。

【讨论】:

  • 感谢您向我解释这些事情。我的问题已经解决。我没有使用 sql 2008,我复制的紧凑型数据库是从 SQL Server 2008 创建的。数据库的架构也不正确。
  • 太好了。将其标记为答案,以便阅读此内容的其他人可以了解要尝试的内容。
【解决方案2】:

我的问题已经解决了。我没有使用 sql 2008,而我的复制紧凑型数据库是从 SQL Server 2008 创建的。数据库的架构也不正确。 现在sql server和compact DB之间的同步已经完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多