更改现有 SQL Server CE 数据库的密码异常

Posted

技术标签:

【中文标题】更改现有 SQL Server CE 数据库的密码异常【英文标题】:Exception changing password of existing SQL Server CE database 【发布时间】:2021-01-27 20:51:07 【问题描述】:

使用 SQL Server CE 4.0.8876.1(NuGet 包)。我正在尝试按照本文更改现有 SQL Server CE 数据库的密码:https://docs.microsoft.com/en-us/previous-versions/sql/compact/sql-ce-3.0/reference/kt1a3805(v=vs.85)?redirectedfrom=MSDN

如果现有数据库已经加密,也许我无法更改密码?

var oldConnStr = "DataSource=\"C:\\temp\\FilePath.sdf\";Persist Security Info=False; 
password=oldPass; Encrypt Database=True; flush interval=1";
var updatePasswordConnStr = "DataSource=; password=newPass; Encrypt Database=True;";

using (var sqlCeEngine = new SqlCeEngine(oldConnStr))

    sqlCeEngine.Compact(null);
    sqlCeEngine.Compact(updatePasswordConnStr);

当我调用sqlCeEngine.Compact(两个调用)时,我不断收到以下异常:

System.Data.SqlServerCe.SqlCeException HResult=0x80004005 Message=为源数据库指定的密码不正确。 [ 数据源 = FilePath.sdf ] Source=SQL Server Compact ADO.NET 数据提供程序

堆栈跟踪: 在 System.Data.SqlServerCe.SqlCeEngine.Repair(SEFIXOPTION 选项,字符串 dstConnStr,RepairOption 修复选项)

【问题讨论】:

【参考方案1】:

嗯,好的,现在可以工作了。

var updatePasswordConnStr = "DataSource=; password=newPass;";

【讨论】:

以上是关于更改现有 SQL Server CE 数据库的密码异常的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架打开受密码保护的 SQL Server CE 数据库

如何阻止 SQL Server CE 3.5 更改跟踪表无限增长?

在 Sql Server CE 中缩小或压缩?

SQL Server CE 中的 Shrink 和 Compact 有啥区别?

根据表中另一个现有列的内容更改 SQL Server 中的现有列

如何在不更改现有数据位置的情况下添加新的 SQL Server 分区范围来容纳未来的数据?