У меня есть база данных SQLCompact, к которой я пытаюсь получить доступ, используя ADO
а также C++
, Однако из-за размера базы данных (300 МБ, превышающей ограничение по умолчанию 256 МБ) я должен указать Max Database Size
в строке подключения. Однако это вызывает .Open(...)
Функция бросить.
Код, который я использую:
HRESULT hr = conn.CreateInstance(__uuidof(Connection), NULL);
conn->Open(L"Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=test.sdf;Max Database Size=512", L"", L"",adConnectUnspecified);
Ошибка:
HR: DB_E_ERRORSOCCURRED
Описание: «Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если доступно. Никакой работы не было сделано».
Сообщение: «Ошибка IDispatch # 3105»
Замечания:
Я пытался использовать тот же код, с меньшей базой данных и удаления Max Database Size
из строки подключения, и она работает как ожидалось. Добавление Max Database Size
снова вызывает проблему снова, поэтому я предполагаю, что это является причиной ошибки.
Какие-нибудь мысли? Как я могу работать с базами данных через Provider
размер по умолчанию?
Вы должны использовать:
Provider= Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=test.sdf;ssce:Max Database Size=512
(то же самое относится к паролю и другим ключевым словам SQL Compact)