Procedura: Impostazione della modalità file all'apertura di un database con OLE DB (a livello di programmazione)
In questo argomento verrà illustrato come impostare la modalità file quando si apre un database di Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) utilizzando il provider OLE DB per SQL Server Compact Edition. Per impostare la modalità di apertura del database, si utilizza la proprietà DBPROP_INIT_MODE. Nella tabella seguente sono elencati i valori validi per la modalità file:
Valore | Definizione |
---|---|
DB_MODE_READ |
Consente di aprire una copia in sola lettura del database. |
DB_MODE_WRITE |
Consente di aprire una copia in sola scrittura del database. |
DB_MODE_READWRITE |
Consente a più processi di aprire e modificare il database. |
DB_MODE_SHARE_DENY_READ |
Impedisce ad altri utenti l'apertura in modalità di lettura. |
DB_MODE_SHARE_DENY_WRITE |
Impedisce ad altri utenti l'apertura in modalità di scrittura. |
DB_MODE_SHARE_EXCLUSIVE |
Impedisce ad altri utenti l'apertura in modalità di lettura/scrittura (DB_MODE_SHARE_DENY_READ | DB_MODE_SHARE_DENY_WRITE). |
DB_MODE_SHARE_DENY_NONE |
Non è possibile negare ad altri utenti l'accesso in lettura né quello in scrittura. |
[!NOTA] In caso di apertura di un database che risiede in una condivisione file, l'unica opzione disponibile è la modalità file DB_MODE_SHARE_EXCLUSIVE. La lettura e la scrittura di un database di SQL Server Compact Edition tramite una condivisione di rete funziona da un solo processo. Nell'ambito di tale processo, possono essere aperte più connessioni. Ad esempio, una connessione può eseguire un'operazione Insert e una seconda connessione può eseguire una query Select. SQL Server Compact Edition non può essere utilizzato da due connessioni separate per accedere allo stesso file con estensione sdf tramite una condivisione di rete. Nella seconda connessione si verificherà una violazione di condivisione a livello di file.
Esempio
Nel codice seguente viene illustrato come impostare la modalità file utilizzando il provider OLE DB per SQL Server Compact Edition.
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;
}