Sql server Microsoft SQL Server本机客户端是否支持IDBANCHNOTIFY?

Sql server Microsoft SQL Server本机客户端是否支持IDBANCHNOTIFY?,sql-server,oledb,oledbcommand,Sql Server,Oledb,Oledbcommand,我正在编写一些OLE DB代码,它通过ICommand::Execute在MS SQL Server上运行查询。通过在执行之前在命令上设置DBPROPVAL\u ASYNCH\u INITIALIZE属性,我将此代码转换为异步操作 我更愿意注册一个IDBAsynchNotify接收器,这样我的代码就可以收到事件通知,而不是通过ISSAsynchStatus进行轮询或阻塞 forICommand::Execute在讨论DB\u S\u ASYNCHRONOUS返回代码时,没有将IConnectio

我正在编写一些OLE DB代码,它通过
ICommand::Execute
在MS SQL Server上运行查询。通过在执行之前在命令上设置
DBPROPVAL\u ASYNCH\u INITIALIZE
属性,我将此代码转换为异步操作

我更愿意注册一个
IDBAsynchNotify
接收器,这样我的代码就可以收到事件通知,而不是通过
ISSAsynchStatus
进行轮询或阻塞

for
ICommand::Execute
在讨论
DB\u S\u ASYNCHRONOUS
返回代码时,没有将
IConnectionPointContainer
显示为可接受的
riid
参数,而是同一文档,建议可以请求一个
IConnectionPointContainer
接口,用于注册我的事件接收器

当我调用
ICommand::Execute
,将
IID\u IConnectionPointContainer
作为
riid
参数传递时,我收到
E\u NOINTERFACE
错误。我还尝试在
Execute
之前设置
DBPROP\u IConnectionPointContainer
属性,但收到了相同的结果


如果必须,我将使用
ISSAsynchStatus
,但我更愿意使用
IDBAsynchNotify
。是否可能?

有关SQL本机客户端OLE Db的详细信息,请参阅,包括示例。链接上说唯一可接受的RIID是IID_IDBAsynchStatus和IID_IsAsynchStatus,因此我的理解是编程模型是基于池的,而不是基于通知的。

根据对的响应,“异步通知编程模型”是本机客户端请求的第五个最重要的特性。我想这就回答了问题。希望sqlncli团队能够尽快解决这个问题。轮询很容易让我恼火。

我以前读过该文档,我从代码中得到的行为肯定会表明这一点。我想我很好奇是否存在任何与此相矛盾的证据。我在这里猜测,但你有没有试着要求IID_IUnknown,然后询问IID_IConnectionPointContainer的结果?糟糕透了。我不喜欢OleDB,因为OleDB从来都不是我的热门话题,但我必须说,没有回调的异步编程不太好。。。