Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-databas i Microsoft Fabric
OLE DB-drivrutinen för SQL Server stöder bevarade datakällobjekt med IPersistFile-gränssnittet .
Examples
A. Behåll initialisering av datakällan:
Detta exempel visar en funktion som behåller initialiseringsegenskaper för datakällan, definierar en server, databas och användningen av Windows autentiseringsläge för anslutning. Servernamnet och databasnamnet tas emot i funktionens parametrar pLocation och pDatasource .
HRESULT SetAndSaveInitProps
(
IDBInitialize* pIDBInitialize,
WCHAR* pDataSource,
WCHAR* pCatalog,
BOOL bUseWinNTAuth
)
{
const ULONG nProps = 4;
ULONG nSSProps;
ULONG nPropSets;
ULONG nProp;
IDBProperties* pIDBProperties = NULL;
IPersistFile* pIPersistFile = NULL;
DBPROP aInitProps[nProps];
DBPROP* aSSInitProps = NULL;
DBPROPSET* aInitPropSets = NULL;
HRESULT hr;
nSSProps = 0;
nPropSets = 1;
aInitPropSets = new DBPROPSET[nPropSets];
// Initialize common property options.
for (nProp = 0; nProp < nProps; nProp++)
{
VariantInit(&aInitProps[nProp].vValue);
aInitProps[nProp].dwOptions = DBPROPOPTIONS_REQUIRED;
aInitProps[nProp].colid = DB_NULLID;
}
// Level of prompting that will be done to complete the connection
// process.
aInitProps[0].dwPropertyID = DBPROP_INIT_PROMPT;
aInitProps[0].vValue.vt = VT_I2;
aInitProps[0].vValue.iVal = DBPROMPT_NOPROMPT;
// Server name.
aInitProps[1].dwPropertyID = DBPROP_INIT_DATASOURCE;
aInitProps[1].vValue.vt = VT_BSTR;
aInitProps[1].vValue.bstrVal = SysAllocString(pDataSource);
// Database.
aInitProps[2].dwPropertyID = DBPROP_INIT_CATALOG;
aInitProps[2].vValue.vt = VT_BSTR;
aInitProps[2].vValue.bstrVal = SysAllocString(pCatalog);
aInitProps[3].dwPropertyID = DBPROP_AUTH_INTEGRATED;
if (bUseWinNTAuth == TRUE)
{
aInitProps[3].vValue.vt = VT_BSTR;
aInitProps[3].vValue.bstrVal = SysAllocString(L"SSPI");
} //end if
// Now that properties are set, construct the PropertySet array.
aInitPropSets[0].guidPropertySet = DBPROPSET_DBINIT;
aInitPropSets[0].cProperties = nProps;
aInitPropSets[0].rgProperties = aInitProps;
// Set initialization properties
pIDBInitialize->QueryInterface(IID_IDBProperties,
(void**) &pIDBProperties);
hr = pIDBProperties->SetProperties(nPropSets, aInitPropSets);
if (FAILED(hr))
{
// Display error from failed SetProperties.
}
pIDBProperties->Release();
// Free references on OLE known strings.
for (nProp = 0; nProp < nProps; nProp++)
{
if (aInitProps[nProp].vValue.vt == VT_BSTR)
SysFreeString(aInitProps[nProp].vValue.bstrVal);
}
for (nProp = 0; nProp < nSSProps; nProp++)
{
if (aSSInitProps[nProp].vValue.vt == VT_BSTR)
SysFreeString(aSSInitProps[nProp].vValue.bstrVal);
}
// Free dynamically allocated memory.
delete [] aInitPropSets;
delete [] aSSInitProps;
// On success, persist the data source.
if (SUCCEEDED(hr))
{
pIDBInitialize->QueryInterface(IID_IPersistFile,
(void**) &pIPersistFile);
hr = pIPersistFile->Save(OLESTR("MyDataSource.txt"), FALSE);
if (FAILED(hr))
{
// Display errors from IPersistFile interface.
}
pIPersistFile->Release();
}
return (hr);
}
B. Använd initiering av persisterad datakälla:
Detta exempel använder ett persistent datakällobjekt med ytterligare initialiseringsegenskaper som tillhandahåller SQL Server-inloggning och lösenord.
HRESULT InitFromPersistedDS
(
IDBInitialize* pIDBInitialize,
WCHAR* pPersistedDSN,
WCHAR* pUID,
WCHAR* pPWD
)
{
//const ULONG nProps = 3;
const ULONG nProps = 1;
const ULONG nPropSets = 1;
ULONG nProp;
IDBProperties* pIDBProperties = NULL;
IPersistFile* pIPersistFile = NULL;
DBPROP aInitProps[nProps];
DBPROPSET aInitPropSets[nPropSets];
HRESULT hr;
// First load the persisted data source information.
pIDBInitialize->QueryInterface(IID_IPersistFile,
(void**) &pIPersistFile);
hr = pIPersistFile->Load(pPersistedDSN, STGM_DIRECT);
if (FAILED(hr))
{
// Display errors from IPersistFile interface.
}
pIPersistFile->Release();
if (FAILED(hr))
{
return (hr);
}
// Initialize common property options.
for (nProp = 0; nProp < nProps; nProp++)
{
VariantInit(&aInitProps[nProp].vValue);
aInitProps[nProp].dwOptions = DBPROPOPTIONS_REQUIRED;
aInitProps[nProp].colid = DB_NULLID;
}
// Level of prompting that will be done to complete the connection
// process.
aInitProps[0].dwPropertyID = DBPROP_INIT_PROMPT;
aInitProps[0].vValue.vt = VT_I2;
aInitProps[0].vValue.iVal = DBPROMPT_NOPROMPT;
// Now that properties are set, construct the PropertySet array.
aInitPropSets[0].guidPropertySet = DBPROPSET_DBINIT;
aInitPropSets[0].cProperties = nProps;
aInitPropSets[0].rgProperties = aInitProps;
// Set initialization properties
pIDBInitialize->QueryInterface(IID_IDBProperties,
(void**) &pIDBProperties);
hr = pIDBProperties->SetProperties(nPropSets, aInitPropSets);
if (SUCCEEDED(hr))
{
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
DumpError(pIDBInitialize, IID_IDBInitialize);
}
}
else
{
// Display error from failed SetProperties.
}
pIDBProperties->Release();
// Free references on OLE known strings.
for (nProp = 0; nProp < nProps; nProp++)
{
if (aInitProps[nProp].vValue.vt == VT_BSTR)
SysFreeString(aInitProps[nProp].vValue.bstrVal);
}
return (hr);
}
IPersistFile::Save-metoden kan anropas före eller efter anropet IDBInitialize::Initialize. Att anropa metoden efter en lyckad retur från IDBInitialize::Initialize säkerställer att en giltig datakällasspecifikation bevaras.