SQL Server:事件不引用任何表(Tuning Advisor警告)

时间:2009-05-14 11:36:18

标签: c# sql-server linq-to-sql performance sqlprofiler

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

但我真的不知道该怎么做,或者我应该或不应该做什么,在哪里或什么。所以我想我可以问这里,但后来我发现了一个名为数据库引擎优化顾问的程序,我认为我可以先尝试一下。问题是我无法让它发挥作用。可能是我只是不知道怎么做,但我真的无法弄清楚这一点。据我所见,我根据帮助文件做了我应该做的事。

  1. 打开 SQL Server Profiler
  2. 使用调整模板启动新的跟踪
  3. 启动我的应用程序并执行一些生成SQL查询的内容。
  4. 关闭我的申请。
  5. 停止追踪。
  6. 将跟踪保存为跟踪文件
  7. 打开数据库引擎优化顾问
  8. 选择文件作为工作负载,然后选择我之前保存的跟踪文件
  9. 选择要调整的数据库和表
  10. 下选择我的应用程序使用的数据库。
  11. 点击开始分析
  12. 到目前为止,我觉得事情还不错。但是当它在一段时间后结束时,我明白了:

    Progress

    一个完全强大的推荐页面。事件没有引用任何表格?这意味着什么(除了明显的当然:p)?我在这里误解了这个过程吗?发生了什么事?

3 个答案:

答案 0 :(得分:7)

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

另外,我也看到一些“无效对象名称”错误 - 确保运行分析器的用户对所有相关表具有适当的权限。

答案 1 :(得分:7)

如果您收到此错误,还可以检查另一件事。如果你像我一样笨拙,你可能忘记在“常规”选项卡上的“工作负载分析数据库”下拉列表中选择相应的数据库

答案 2 :(得分:3)

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

所以我授予了对该IIS应用程序池用户的SHOWPATH访问权限,然后它运行正常。

GRANT SHOWPLAN TO [COMPANYDOMIAN\IIS_APPUSER]