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

Vedere anche

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition