问题描述
使用 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;";