首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过DDtek使用C#获取显示计划

如何通过DDtek使用C#获取显示计划
EN

Stack Overflow用户
提问于 2020-03-14 01:01:07
回答 1查看 22关注 0票数 0

我正在尝试使用C#中Sybase服务器的DDTek Ado.Net库来查找查询的显示计划。

我想知道是否有人知道如何使用Sybase DDtek库来做这件事。下面是我之前尝试过的一些示例代码:

代码语言:javascript
复制
  using (SybaseConnection dbConnect = new SybaseConnection())
                {

                    dbConnect.ConnectionString = ConfigurationManager.ConnectionStrings["SybaseDB"].ConnectionString;
                    dbConnect.StatisticsEnabled = true;

                    dbConnect.Open();



                    dbConnect.InfoMessage += OnInfoMessage;


                    SybaseCommand cmd = new SybaseCommand { CommandTimeout = 1000, Connection = dbConnect };


                    SybaseCommand cmd2 = new SybaseCommand { CommandTimeout = 1000, Connection = dbConnect };
                    cmd.CommandText = "SET SHOWPLAN ON";
                   // int ans = cmd.ExecuteNonQuery();

                    cmd2.CommandText = mainSql;
                   SybaseDataReader sDR = cmd2.ExecuteReader();
                   // var ansp = cmd2.ExecuteNonQuery();

                    //ans = cmd.ExecuteNonQuery();

                    String plan = String.Empty;



                    //sql.ToString();
                    var stats1 = dbConnect.RetrieveStatistics();
                    //var ans = cmd.ExecuteScalar();

                    var stats2 = dbConnect.RetrieveStatistics();
                    //.ExecuteNonQuery();  // no value needed in return

                    //cmd.CommandText = "SET SHOWPLAN OFF";
                    //cmd.ExecuteNonQuery();

                    dbConnect.Close();
                    dbConnect.Dispose();
                }

其中,mainSql变量是对select查询周围的存储过程的调用,具有以下行:

代码语言:javascript
复制
set showplan on 
--set noexec on
set fmtonly on

在RapidSQL中运行时,将生成不返回任何数据行的显示计划。使用调试器钻取返回的对象时未生成show plan信息。也许我找错地方了?

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 03:21:17

我想通了。不要使用存储过程。将select查询放入mainSql变量中。不要使用ExecuteReader执行,同时使用.ExecuteNonQuery执行显示计划命令和选择查询。

这会在传入的SybaseInfoArgs的Errors对象中触发InfoMessage回调。这些可以连接到一个消息中,就像你在RapidSql中得到的一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60674513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档