gpt4 book ai didi

c++ - 关于断开命名管道的 Sybase IQ 问题(在负载表上)

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:24 26 4
gpt4 key购买 nike

我在 SybaseIQ 15.4 上尝试使用命名管道执行批量加载时遇到问题。代码是 C++ 并打开 Windows。

在批量结束时,在刷新缓冲区 (FlushFileBuffers) 后,当我尝试断开命名管道 (DisconnectNamedPipe),正在运行的 LOAD TABLE 查询 崩溃并出现 “I/O Error on file\\.\pipe\pipename " 虽然文档说:

“管道编写器必须调用 FlushFileBuffers( ),然后调用 DisconnectNamedPipe( )。(如果不这样做,Sybase IQ 会报告来自 hos io::Read( ) 的异常。)这会发出 PIPE_NOT_CONNECTED 错误,通知Sybase IQ 管道以有序方式关闭而不是不受控制的断开连接”

请注意,如果我删除 DisconnectNamedPipe,批量加载就可以了

这是代码的简历,感谢您的帮助

hPipe = CreateNamedPipe(strPipeName, PIPE_ACCESS_OUTBOUND, PIPE_TYPE_BYTE, 255, 65536, 65536, 100, NULL);

ConnectNamedPipe(hPipe, NULL);

// in another thread: LOAD TABLE myTable (...) USING CLIENT FILE strPipeName ...

WriteFile(hPipe, ...);

FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe); // I/O Error on file \\.\pipe\pipename
CloseHandle(hPipe);

最佳答案

这是一个 Sybase IQ 错误。使用 15.2 或使用 15.4 的最后一个 EBR,DisconnectNamedPipe 工作正常

关于c++ - 关于断开命名管道的 Sybase IQ 问题(在负载表上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com