10

我有一个用 C# 编写的应用程序,它使用 Linq2SQL 与 SQL Server 进行通信。有些查询运行有点(非常)慢,我认为它可能需要一些索引来加快速度。

但我真的不知道该怎么做,也不知道我应该或不应该做什么或在哪里做什么。所以我想我可以在这里问,但后来我发现了一个名为Database Engine Tuning Advisor的程序,我认为我可以先尝试一下。问题是我无法让它工作。可能是我不知道该怎么做,但我真的无法弄清楚这一点。据我所知,我已经按照帮助文件做了我应该做的事情。

  1. 打开SQL Server Profiler
  2. 使用Tuning模板开始一个新的Trace 。
  3. 启动我的应用程序并执行一些生成 SQL 查询的操作。
  4. 关闭我的应用程序。
  5. 停止追踪。
  6. 将跟踪保存为跟踪文件
  7. 打开数据库引擎优化顾问
  8. 选择File as Workload并选择我之前保存的Trace 文件。
  9. 在Select databases and tables to tune下选择我的应用程序使用的数据库。
  10. 单击开始分析

到目前为止,我认为事情进展顺利。但是当它在一段时间后完成时,我得到了这个:

进步

还有一个完全空的推荐页面。事件不引用任何表?这是什么意思(当然除了显而易见的:p)?我是否误解了这里的流程?到底是怎么回事?

4

3 回答 3

6

如果您收到此错误,您可以检查另一件事。如果您像我一样是个笨蛋,您可能忘记从“常规”选项卡上的“用于工作负载分析的数据库”下拉菜单中选择适当的数据库

于 2010-11-15T16:56:51.347 回答
6

我认为你没有得到推荐的原因是因为你对你的数据库没有“SHOWPLAN”权限。授予您正在运行分析器的用户访问权限,然后重试。

此外,我还看到了一些“无效的对象名称”错误——确保运行分析器的用户对所有涉及的表具有适当的权限。

于 2009-05-14T12:17:37.020 回答
3

我以自己 (dbo) 的身份运行分析器,但我的跟踪本身包含来自没有 SHOWPATH 访问权限的 IIS 应用程序池用户的查询。

因此,我授予该 IIS 应用程序池用户的 SHOWPATH 访问权限,然后它运行良好。

GRANT SHOWPLAN TO [COMPANYDOMIAN\IIS_APPUSER]
于 2011-02-03T17:34:03.410 回答