Aracılığıyla paylaş


Veri kaynağı nesneleri kalıcı

The SQL Server Native istemci OLE DB sağlayıcı supports persisted data kaynak objects with the IPersistFile arabirim.

Örnekler

C.Veri ısrar kaynak başlatma:

Bu örnek, veri devam eden bir işlev gösterir kaynak başlatma özelliklerini bir sunucu ve veritabanı bağlantısı için Windows kimlik doğrulaması modu kullanımını tanımlama.Sunucu adını ve veritabanı adı içinde alınan pLocation and pDatasource parametreleri işlevinin.

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.Tutarlı veriler kullanmasına kaynak başlatma:

Bu örnek, kalıcı bir veri kullanan kaynak sağlayan ek bir başlatma özelliklerini içeren nesne bir SQL Server oturum açma adı ve parola.

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

The IPersistFile::Save yöntem can be called before or after calling IDBInitialize::Initialize.Başarılı bir dönüşten sonra yöntem çağırma IDBInitialize::Initialize geçerli veri kaynağı belirtim kalıcıdır sağlar.

See Also

Concepts