2014-12-04 80 views
1

我有一个SQL Server CE数据库正在使用最大数据库大小4096kB。当我插入一行我得到的,符合市场预期,出现以下错误:Catch-22当SQL Server CE数据库已满并试图删除

The database file is larger than the configured maximum database size. This setting takes effect on the first concurrent database connection only. [ Required Max Database Size (in MB; 0 if unknown) = 4092 ]

所以,我想通过只删除某些行,发出一个普通SqlCeCommand来处理这个问题。问题在于,即使通过ExecuteNonQuery执行的删除命令现在也会在它已满时引发此错误。

我该如何解决这个问题?

回答

0

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

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

如果您正在运行到这个问题,现在是时候切换到SQL平台,可以处理大型数据库(SQL服务器是明显的例子)。

编辑 如果你正在使用一个SqlCeEngine对象,看来你可以做到这一点programmatically还有:

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

我曾尝试与SqlCeEngine缩小它确实也收缩的百分比或两个,但仍运行查询时出现同样的问题。 – serializer 2014-12-05 08:20:15