【问题标题】:Get last replication date/time from SQL server CE从 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 获取此信息?

非常感谢所有帮助。

迈克

【问题讨论】:

    标签: sql sql-server windows-mobile sql-server-ce merge-replication


    【解决方案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);
            }
        }
    

    【讨论】:

    • 完美!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2018-03-10
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多