Catch-22 SQL Server CE数据库已满并尝试删除

时间:2014-12-04 20:51:32

标签: c# sql-server-ce

我有一个使用最大数据库大小为4096kB的SQL Server CE数据库。当我插入一行时,我按预期得到以下错误:

  

数据库文件大于配置的最大数据库大小。   此设置对第一个并发数据库连接生效   只要。 [所需的最大数据库大小(以MB为单位;如果未知则为0)= 4092]

所以,我试图通过删除一些行,发出正常的SqlCeCommand来处理这个问题。问题是即使是通过ExecuteNonQuery执行的delete命令,当它已满时也会抛出此错误。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如何尝试使用sqlcecmd这样的命令行工具来缩小数据库,释放空间以减小其整体大小?这应该释放足够的空间,然后删除任何无关的行。

sqlcecmd.exe -d "Data Source=C:\YourDatabase.sdf" -e shrink

如果您遇到此问题,是时候切换到可以处理更大数据库的SQL平台(SQL Server就是一个明显的例子)。

修改 如果您正在使用SqlCeEngine对象,则表明您也可以执行此操作programmatically

SqlCeEngine engine = new SqlCeEngine("Data Source = C:\YourDatabase.sdf");
engine.Shrink();