我正在尝试运行一个简单的查询来查找具有最高平均CPU时间的查询.该代码是从字面上复制粘贴在这里:
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
Run Code Online (Sandbox Code Playgroud)
问题是,SQL Server抱怨第8行的语法错误,参数为sys.dm_exec_sql_text:qs.sql_handle无效读取
Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我不能弄清楚查询有什么问题.有任何想法吗?
我正在对Glenn Berry的优秀DMV查询进行一些修改!
但是,我想在结果集中添加"最后一次服务器重启",或者更具体地说,重置(所有,特定)DMV的统计信息的日期/时间.
因为在查看统计数据时知道上次重置非常重要,所以我想确保日期/时间准确并显示出来.
问题:如何获得重置/全部DMV统计数据的最准确日期/时间?
谢谢!-D
我听说在Microsoft SQL Server中有多种方法可以找到"最差"的存储过程:执行次数,CPU工作时间,队列等待时间等.
我正在寻找一种方法来找到最差(最慢/最常用)的UDF - 是否有DMV查询?
例如,来自将使您成为超级英雄的五个DMV查询的此查询按总工作时间返回前25个缓存的SP,这实际上意味着CPU压力的最昂贵的存储过程.
我如何为UDF写这样的东西?
SELECT TOP(25) p.name AS [SP Name], qs.total_worker_time AS [TotalWorkerTime],
qs.total_worker_time/qs.execution_count AS [AvgWorkerTime], qs.execution_count,
ISNULL(qs.execution_count/DATEDIFF(Second, qs.cached_time, GETDATE()), 0) AS [Calls/Second],
qs.total_elapsed_time, qs.total_elapsed_time/qs.execution_count
AS [avg_elapsed_time], qs.cached_time
FROM sys.procedures AS p
INNER JOIN sys.dm_exec_procedure_stats AS qs
ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud) 根据MSDN链接http://msdn.microsoft.com/en-us/library/ms177648.aspx上给出的解释, 我无法完全理解读取和写入的含义.无论是物理还是逻辑或数据库读取和写.请在这方面帮助我
有没有办法从 Analysis Services 实例获取当前服务器名称?SELECT @@SERVERNAME基本上与 SSAS 相同 。
我已经调查过 SELECT * FROM $system.DISCOVER_INSTANCES ,但返回一个错误:
“INSTANCE_NAME”限制是必需的,但请求中缺少该限制。考虑使用 SYSTEMRESTRICTSCHEMA 来提供限制。
当尝试使用时,SYSTEMRESTRICTSCHEMA我遇到了同样的错误。当尝试使用时,INSTANCE_NAME我遇到了同样的错误。当尝试使用SYSTEMRESTRICTSCHEMA和 指定时INSTANCE_NAME,我收到相同的错误。
任何帮助或见解表示赞赏!
我有这个查询
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
Run Code Online (Sandbox Code Playgroud)
当我执行它时,dbid字段返回null.
为什么这样做?我想限制来自一个数据库的查询,但它似乎无法正常工作.
非常感谢你的回答.
我试图查看sys.dm_db_missing_index_details来检查我的SQL Server 2005数据库上是否缺少索引.它没有返回任何行.
它可能是空的但很不可能,因为我没有在任何表上添加任何索引(除了通过创建主键获得的索引).我也在运行单元测试以及adhoc开发测试(使用Linq to SQL),因此存在一些针对它的活动.
我是否需要打开此数据的捕获?
这仅在某些版本的SQL Server 2005上受支持吗?
提前感谢任何帮助的努力.
我正在尝试使用 DMV 获取表列表的所有依赖项sys.dm_sql_referencing_entities。
这个查询给了我所有表的列表:
SELECT TableName from FinalTableList;
Run Code Online (Sandbox Code Playgroud)
此查询给出 TableA 的依赖关系:
SELECT referencing_entity_name
FROM sys.dm_sql_referencing_entities ('dbo.TableA', 'OBJECT') ;
Run Code Online (Sandbox Code Playgroud)
我想将上述 2 项合并到一个查询或过程中,以便我可以获得以下格式的所有依赖项:
TableA Dependency1
Dependency2
Dependency3
TableB Dependency1
Dependency2
...................
Run Code Online (Sandbox Code Playgroud)
应该如何构建查询?
我正在尝试使用 DMV 从表格多维数据集中查询元数据。我能够在没有 where 子句的情况下让它工作,但我似乎无法让 where 子句起作用。有什么建议吗?
这是有效的代码:
SELECT
[MEASURE_CAPTION] AS [Measure]
,[MEASURE_IS_VISIBLE] AS [Visable]
,[DESCRIPTION] AS [Description]
,[MEASURE_DISPLAY_FOLDER] AS [Display Folder]
,[EXPRESSION] AS [Calculation]
FROM $SYSTEM.MDSCHEMA_MEASURES
Run Code Online (Sandbox Code Playgroud)
我尝试过的 WHERE 子句是:
WHERE ([MEASURE_IS_VISIBLE].[members].[true])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
The dot expression is not allowed in the context at line 9, column 1.
Run Code Online (Sandbox Code Playgroud)
还:
WHERE [MEASURE_IS_VISIBLE] = TRUE
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: A Boolean expression is not allowed in the context at line 9, column 7.
Run Code Online (Sandbox Code Playgroud)
我在这些主题上尝试了很多验证,但总是得到相同的结果。我完全不熟悉 MDX 的工作原理,因此我们将不胜感激。
dmv ×9
sql-server ×8
performance ×2
sql ×2
t-sql ×2
dependencies ×1
mdx ×1
ssas ×1
ssas-tabular ×1