从 SQL Server CE 获取上次复制日期/时间

Posted

技术标签:

【中文标题】从 SQL Server CE 获取上次复制日期/时间【英文标题】:Get last replication date/time from SQL server CE 【发布时间】:2012-03-29 10:48:25 【问题描述】:

我的设备上有一个带有 SQL Server CE 3.5 的 Windows Mobile 6.0 应用程序。该程序从发布者获取最新数据 - SQL Server 2008。复制工作正常,但我想向用户显示上次从服务器复制的时间。

有谁知道我可以从哪里获取可以在设备上执行的 SQL 以从 SQL Server CE 获取此信息?

非常感谢所有帮助。

迈克

【问题讨论】:

【参考方案1】:
    /// <summary>
    /// Get the local Datetime for last succesful synchronization
    /// If no Synchronization has happened, will return DateTime.MinValue
    /// </summary>
    /// <param name="connection">An open connection to the local database</param>
    /// <returns>The date and time for the last succesful sync</returns>
    public DateTime GetLastSuccessfulSyncTime(SqlCeConnection connection)
    
        if (!System.IO.File.Exists(connection.Database))
            return DateTime.MinValue;

        if (connection.State != System.Data.ConnectionState.Open)
        
            connection.Open();
        

        var props = GetPropertiesFromSettings();

        using (SqlCeCommand cmd = connection.CreateCommand())
        
            cmd.Connection = connection;

            cmd.CommandText = "SELECT table_name FROM information_schema.tables WHERE TABLE_NAME = @table";
            cmd.Parameters.Add("@table", SqlDbType.NVarChar, 4000);
            cmd.Parameters["@table"].Value = "__sysMergeSubscriptions";
            object obj = cmd.ExecuteScalar();

            if (obj == null)
                return DateTime.MinValue;
            cmd.Parameters.Clear();

            cmd.CommandText = "SELECT LastSuccessfulSync FROM __sysMergeSubscriptions " +
                "WHERE Publisher=@publisher AND PublisherDatabase=@database AND Publication=@publication";

            cmd.Parameters.Add("@publisher", SqlDbType.NVarChar, 4000);
            cmd.Parameters["@publisher"].Value = props.Publisher;

            cmd.Parameters.Add("@database", SqlDbType.NVarChar, 4000);
            cmd.Parameters["@database"].Value = props.PublisherDatabase;

            cmd.Parameters.Add("@publication", SqlDbType.NVarChar, 4000);
            cmd.Parameters["@publication"].Value = props.Publication;

            obj = cmd.ExecuteScalar();
            if (obj == null)
                return DateTime.MinValue;
            else
                return ((DateTime)obj);
        
    

【讨论】:

完美!感谢您的帮助。

以上是关于从 SQL Server CE 获取上次复制日期/时间的主要内容,如果未能解决你的问题,请参考以下文章

从 Win CE 设备到 SQL Server 2008 R2 的 SQL 复制

在 SQL Server 中获取当前日期? [复制]

是否可以从资产文件中获取上次修改日期?

SQL Server CE 中的正确日期时间格式?

Windows Phone 8 SQL Server CE 转换为日期时间时发生溢出

SQL Server 查询上次移动的项目