更改现有 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 中的 Shrink 和 Compact 有啥区别?