如何使用 C++ 的 CDatabase ODBC 连接到 SQL 服务器数据库来设置或禁用查询超时
How to set or disable the Query Timeout with a C++'s CDatabase ODBC connection to a SQL Server database
我需要通过一些代码进行查询 运行。 运行 MSSMS 中的查询需要一分半钟(对于超过 400 万行来说还算不错)。
在代码中,我用
打开连接
CDatabase *base = new CDatabase () ;
base->OpenEx ("Driver={SQL Server};Server=Computer\User;Database=base;") ;
然后我可以创建 CRecordset
个对象和 运行 个查询。 SELECT COUNT
查询正常工作(给出 ~4M)。第一个 SELECT cols
查询(获取一些属性)工作正常。他们各自的 CRecordset
已妥善关闭和清洁。第二个 SELECT cols
查询(returns 4M 行的大连接)每次尝试都会超时。
我不知道如何设置查询超时值,如何调用该参数,或者首先在哪里设置它。我在连接字符串中尝试了 many combinations 个参数,我尝试编辑 ODBC 引导池选项。我对使用另一个 ODBC 连接对象不感兴趣,但我可以设置一个 DSN 并通过它连接,而不是使用直接连接字符串。
最坏的情况是最坏的情况我只会对所有内容进行分页,但现在很麻烦,而且由于查询可能会超时,因此从逻辑上讲也应该有一种方法可以设置该超时,我想知道它是什么是。
查询超时不是连接字符串参数,至少对于 SQL 服务器而言不是。您可能正在寻找 CDatabase::SetQueryTimeout 成员函数。
我需要通过一些代码进行查询 运行。 运行 MSSMS 中的查询需要一分半钟(对于超过 400 万行来说还算不错)。 在代码中,我用
打开连接CDatabase *base = new CDatabase () ;
base->OpenEx ("Driver={SQL Server};Server=Computer\User;Database=base;") ;
然后我可以创建 CRecordset
个对象和 运行 个查询。 SELECT COUNT
查询正常工作(给出 ~4M)。第一个 SELECT cols
查询(获取一些属性)工作正常。他们各自的 CRecordset
已妥善关闭和清洁。第二个 SELECT cols
查询(returns 4M 行的大连接)每次尝试都会超时。
我不知道如何设置查询超时值,如何调用该参数,或者首先在哪里设置它。我在连接字符串中尝试了 many combinations 个参数,我尝试编辑 ODBC 引导池选项。我对使用另一个 ODBC 连接对象不感兴趣,但我可以设置一个 DSN 并通过它连接,而不是使用直接连接字符串。
最坏的情况是最坏的情况我只会对所有内容进行分页,但现在很麻烦,而且由于查询可能会超时,因此从逻辑上讲也应该有一种方法可以设置该超时,我想知道它是什么是。
查询超时不是连接字符串参数,至少对于 SQL 服务器而言不是。您可能正在寻找 CDatabase::SetQueryTimeout 成员函数。