2015-07-23 7 views
5

Ich habe eine SQLCompact-Datenbank, auf die ich unter Verwendung von ADO und C++ zugreifen möchte. Aufgrund der Größe der Datenbank (300 MB, über das Standardlimit von 256 MB) muss ich jedoch die Max Database Size in der Verbindungszeichenfolge angeben. Dies bewirkt jedoch, dass die .Open(...)-Funktion ausgelöst wird.Verwendung der Option "Max. Datenbankgröße" in ADO bewirkt, dass der Befehl "Öffnen" ausgelöst wird

Der Code Ich verwende:

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); 

Der Fehler:

HR: DB_E_ERRORSOCCURRED

Description: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."

Message: "IDispatch error #3105"

Hinweis:

Ich habe versucht, mit dem gleichen Code, mit einer kleineren Datenbank und Entfernen Max Database Size aus der Verbindungszeichenfolge und es funktioniert wie erwartet. Das Hinzufügen der Max Database Size wieder verursacht das Problem wieder angezeigt werden, daher meine Annahme, dass es die ist, die den Fehler verursacht.

Irgendwelche Gedanken? Wie kann ich mit Datenbanken über die Standardgröße Provider arbeiten?

Antwort

2

Sie verwenden müssen:

Provider= Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=test.sdf;ssce:Max Database Size=512 

(Gleiches gilt für Passwort und andere SQL Compact spezifische Keywords)

+0

Danke, ich werde es versuchen, sobald ich eine Chance (Randnotiz haben: Ihre SQLCompact Blogposts und Tools sind erstaunlich, danke =)) – Omni

+0

Danke! Lass es mich wissen, wenn es für dich funktioniert ... – ErikEJ

+0

Es hat funktioniert, vielen Dank. – Omni

Verwandte Themen