SQL Server Compact“修复实用程序”在哪里?

Posted

技术标签:

【中文标题】SQL Server Compact“修复实用程序”在哪里?【英文标题】:Where is the SQL Server Compact "repair utility?" 【发布时间】:2014-04-11 00:04:37 【问题描述】:

我使用 C# System.Data.SqlServerCe 版本 3.5.1.0 创建了一个 .SDF 数据库文件。创建后打开连接时,有时会收到以下错误:

数据库文件可能已损坏。运行修复实用程序检查 数据库文件。 [ 数据库名称 = \?\C:\SomeDatabase.sdf ]

“修复实用程序”在哪里?我们如何使用它?

我已经在 Google 和 *** 上搜索了答案:

SQL Server Compact 修复实用程序 SDF 修复实用程序

这个MSDN article 谈论以编程方式进行。有命令行方法吗?

【问题讨论】:

【参考方案1】:

这是一个可以运行的小型 C#.NET 控制台应用程序:

class Program

    static void Main(string[] args)
    
        SqlCeEngine engine = 
             new SqlCeEngine("Data Source = C:\\Users\\SomeUser\\Documents\\SomeDB.sdf");
        if (false == engine.Verify())
        
            Console.WriteLine("Database is corrupted.");
            try
            
                engine.Repair(null, RepairOption.DeleteCorruptedRows);
            
            catch(SqlCeException ex)
            
                Console.WriteLine(ex.Message);
            
        
        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    

在此MSDN Article 中查找更多选项。使用ScriptCs在命令提示符下执行。

【讨论】:

首先试试这个:engine.Repair(null, RepairOption.RecoverAllPossibleRows);对我来说这也有效。【参考方案2】:

您可以使用我的 sqlcecmd 工具来执行此操作,而无需编写任何代码。 https://github.com/erikej/sqlcecmd

【讨论】:

我投了赞成票,因为它很有帮助;成功下载您的工具并从命令行使用修复实用程序后,我会将其标记为答案。

以上是关于SQL Server Compact“修复实用程序”在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 到 SQL Server Compact Edition?

从 SQL Server Compact 4.0 迁移到 SQL Server Express 后提供程序错误

SQL Server 可以复制到 SQL Server Compact Edition 吗?

SQL Server Express 和 SQL Server Compact Edition

从使用 SQL Server Express 切换到 SQL Server Compact

SQL Server Compact Edition 和 SQL Server 2008 Management Studio