如何使用ATL / MSOLEDBSQL启用连接资源池?

时间:2019-06-19 05:09:39

标签: c++ oledb atl

我具有ATL代码,可以在启用连接资源池的情况下打开sql连接。


    CDBPropSet  dbinit;
    dbinit[0].SetGUID(DBPROPSET_DBINIT);
    dbinit[0].AddProperty(DBPROP_INIT_OLEDBSERVICES, (long)DBPROPVAL_OS_ENABLEALL);
    CDataSource::OpenWithServiceComponents ("SQLNCLI11", dbinit, 1);

编辑
我正在从SQLNCLI迁移到MSOLEDBSQL,以便启用MULTISUBNETFAILOVER选项。但是当使用MSOLEDBSQL作为MULTISUBNETFAILOVER的提供程序调用{​​{1}}时,我得到了错误。

CDataSource::OpenWithServiceComponents

如何启用ATL / MSOLEDBSQL和MULTISUBNETFAILOVER来启用连接资源池?

1 个答案:

答案 0 :(得分:1)

这归因于AddProperty工具类随附的CDBPropSet实用程序方法。您使用VARIANT_TRUE(这是OLEDB的正确值),但由于VARIANT_TRUE太短,因此它迫使C ++编译器使用此重载:

bool AddProperty(DWORD dwPropertyID, short nValue, DBPROPOPTIONS propoptions);

因此,只需使用真正的C ++ bool,如下所示:

dbinit[1].AddProperty(SSPROP_INIT_MULTISUBNETFAILOVER, true));

该实用程序类将传递一个VARIANT_TRUE ...