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

问题描述

使用 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 ]
源=SQL Server Compact ADO.NET 数据提供程序

堆栈跟踪:
在 System.Data.SqlServerCe.SqlCeEngine.Repair(SEFIXOPTION option,String dstConnStr,RepairOption repairOption)

解决方法

嗯,现在可以了。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...