Что произойдет, если будет достигнут лимит Sql Server Compact Edition? - PullRequest
12 голосов
/ 06 июня 2011

Что произойдет, если размер базы данных SQL Server Compact Edition достигнет 4 ГБ? Есть ли специальное исключение для этого?

Могу ли я безопасно перехватить это событие или исключение и, скажем, создать новую базу данных?

1 Ответ

8 голосов
/ 06 июня 2011

Я сам не сталкивался с этим, но похоже, что SqlCeException будет сгенерировано, а свойство NativeError содержащегося SqlCeError будет иметь код ошибки 25104 (SSCE_M_DATABASETOOBIG).

Вот список из SqlCeError Родных кодов, связанных с ошибками в механизме БД - один из них, когда файл БД слишком велик, находится примерно на 2/3 пути вниз. Листинг для SQL CE 3.5; Вы не указали, какую версию вы использовали, но я предполагаю, что она не изменится.

Я не понимаю, почему вы не можете перехватить это исключение, а затем создать новую базу данных в своем разделе catch.

try {
  //do something
} catch (SqlCeException cexc){
  foeach (SqlCeError aError in cexc.Errors) {
    if (aError.NativeError == 25104) {  //this is the code for the TOO BIG error code
      //handle too big error -- maybe create a new database
    }
  }
}

Надеюсь, это поможет!

...