我具有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来启用连接资源池?
答案 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 ...