Freigeben über


Vorgehensweise: Festlegen des Dateimodus beim Öffnen einer Datenbank mit OLE DB (programmgesteuert)

In diesem Thema erfahren Sie, wie Sie den Dateimodus beim Öffnen einer Datenbank von Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) festlegen. Dazu verwenden Sie den OLE DB-Anbieter für SQL Server Compact Edition. Zum Festlegen des Modus, in dem die Datenbank geöffnet wird, verwenden Sie die DBPROP_INIT_MODE-Eigenschaft. In der folgenden Tabelle finden Sie Definitionen der zulässigen Werte für den Dateimodus:

Wert Definition

DB_MODE_READ

Öffnet eine schreibgeschützte Kopie der Datenbank.

DB_MODE_WRITE

Öffnet eine lesegeschützte Kopie der Datenbank.

DB_MODE_READWRITE

Ermöglicht, dass mehrere Prozesse die Datenbank öffnen und ändern können.

DB_MODE_SHARE_DENY_READ

Verhindert, dass andere die Datenbank im Lesemodus öffnen.

DB_MODE_SHARE_DENY_WRITE

Verhindert, dass andere die Datenbank im Schreibmodus öffnen.

DB_MODE_SHARE_EXCLUSIVE

Verhindert, dass andere die Datenbank im Lese-/Schreibmodus öffnen (DB_MODE_SHARE_DENY_READ | DB_MODE_SHARE_DENY_WRITE).

DB_MODE_SHARE_DENY_NONE

Weder der Lese- noch der Schreibzugriff kann anderen verweigert werden.

Hinweis:
Wenn Sie eine Datenbank öffnen, die sich auf einer Dateifreigabe befindet, ist der Dateimodus DB_MODE_SHARE_EXCLUSIVE die einzige verfügbare Option. Das Lesen und Schreiben einer SQL Server Compact Edition-Datenbank über eine Netzwerkfreigabe erfolgt nur durch einen Prozess. Innerhalb des einen Prozesses können mehrere Verbindungen geöffnet werden. Beispielsweise kann eine Verbindung einen Insert-Vorgang und eine zweite Verbindung eine Select-Abfrage ausführen. Zwei separate Verbindungen können jedoch nicht SQL Server Compact Edition verwenden, um über eine Netzwerkfreigabe auf dieselbe SDF-Datei zuzugreifen. Die zweite Verbindung erhält einen Fehler wegen Dateifreigabeverletzung.

Beispiel

Im folgenden Codebeispiel wird gezeigt, wie der Dateimodus festgelegt wird. Dabei wird der OLE DB-Anbieter für SQL Server Compact Edition verwendet.

DBPROPSETdbpropset[1]; // Property Set used to initialize provider
DBPROPdbprop[2]; // Property array used in property set to initialize provider

VariantInit(&dbprop[0].vValue);
VariantInit(&dbprop[1].vValue);

// Initialize property with name of database
dbprop[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
dbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
dbprop[0].vValue.vt = VT_BSTR;
dbprop[0].vValue.bstrVal = SysAllocString(L"MyDB.sdf");

if(NULL == dbprop[0].vValue.bstrVal)
{
     hr = E_OUTOFMEMORY;
     goto Exit;
}
// Initialize property with open mode for database
dbprop[1].dwPropertyID = DBPROP_INIT_MODE;
dbprop[1].dwOptions = DBPROPOPTIONS_REQUIRED;
dbprop[1].vValue.vt = VT_I4;
dbprop[1].vValue.lVal = DB_MODE_READ;

// Initialize property set
dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
dbpropset[0].rgProperties = dbprop;
dbpropset[0].cProperties = sizeof(dbprop)/sizeof(dbprop[0]);

// Set properties into the provider's DSO object
hr = pIDBProperties->SetProperties(sizeof(dbpropset)/sizeof(dbpropset[0]), dbpropset);
if(FAILED(hr))
{
      goto Exit;
}

Siehe auch

Hilfe und Information

Informationsquellen für SQL Server Compact Edition