2014-12-04 75 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