Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个T-SQL select语句有什么问题?_Sql_Sql Server 2005_Tsql_Select - Fatal编程技术网

这个T-SQL select语句有什么问题?

这个T-SQL select语句有什么问题?,sql,sql-server-2005,tsql,select,Sql,Sql Server 2005,Tsql,Select,我正在阅读一篇文章,但当我运行该文章提供的代码时,我发现错误: Msg 102, Level 15, State 1, Line 16 Incorrect syntax near '.'. 我仔细检查了语法,找不到这个错误的原因。代码如下,由SQL提示符格式化 有人能帮我吗?非常感谢 SELECT es.session_id , es.host_name , es.login_name , er.status , DB_NAME

我正在阅读一篇文章,但当我运行该文章提供的代码时,我发现错误:

Msg 102, Level 15, State 1, Line 16
Incorrect syntax near '.'.
我仔细检查了语法,找不到这个错误的原因。代码如下,由SQL提示符格式化

有人能帮我吗?非常感谢

SELECT  es.session_id ,
        es.host_name ,
        es.login_name ,
        er.status ,
        DB_NAME(database_id) AS DatabaseName ,
        SUBSTRING(qt.text, ( er.statement_start_offset / 2 ) + 1, ( ( CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
                                                                           ELSE er.statement_end_offset
                                                                      END - er.statement_start_offset ) / 2 ) + 1) AS [Individual Query] ,
        qt.text AS [Parent Query] ,
        es.program_name ,
        er.start_time ,
        qp.query_plan ,
        er.wait_type ,
        er.total_elapsed_time ,
        er.cpu_time ,
        er.logical_reads ,
        er.blocking_session_id ,
        er.open_transaction_count ,
        er.last_wait_type ,
        er.percent_complete
FROM    sys.dm_exec_requests AS er
        INNER JOIN sys.dm_exec_sessions AS es ON es.session_id = er.session_id
        CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
        CROSS APPLY sys.dm_exec_query_plan(er.plan_handle) qp
WHERE   es.is_user_process = 1
        AND es.session_Id NOT IN ( @@SPID )
ORDER BY es.session_id
编辑:

我使用SSMS 2008对SQLServer2005数据库运行上面的查询。当我尝试使用SSMS2005对SQLServer2005数据库运行相同的查询时,一切正常。据我所知,SSMS2008可以连接到SQLServer2005数据库并对其进行操作,对吗?我还尝试了另一个例子,如下所示。这真的很简单。同样,在对SQLServer2005使用SSMS2005时,它也会成功执行。在对SQLServer2005使用SSMS2008时,它给出了与我前面提到的相同的错误

SELECT  stat.sql_handle ,
        sqltext.text SQL
FROM    sys.dm_exec_query_stats stat
        CROSS APPLY sys.dm_exec_sql_text(stat.sql_handle) sqltext
有人对此有什么想法吗

谢谢

编辑2:


刚刚尝试过,对SQL Server 2008使用SSMS 2008可以很好地工作。

SQL本身没有问题[在我的机器上工作],所以可能是数据错误。子字符串函数很可能是最可疑的。尝试使用TOP 1和/或以相反顺序运行它。

您说您连接到SQL Server 2005数据库几次。这是指SQLServer2005服务器吗

在SQL Server 2008 Server上使用SQL Server 2008 SSMS时,我能够重现您的问题。当当前数据库的“我的数据库兼容性”级别为SQL Server 2000时会发生这种情况,而SQL Server 2000没有您正在尝试的功能。当我切换数据库时,命令起作用


检查数据库的兼容性级别。如果SQL Server 2005或更高版本,该命令将起作用。

我现在看不到它,但我会尝试通过首先选择*而不是字段列表来缩小问题范围。这至少可以让你知道它在哪一部分有问题。是的,我将列改为*并且仍然得到错误。所以我认为错误来自于from部分。但是from部分非常简单,我找不到什么有趣的东西。嗨,史蒂文,你是如何执行这个查询的?我的意思是什么数据库,什么客户端工具等等。Hi@Yousui-我刚刚将其粘贴到enterprise manager的一个新查询窗口中,默认数据库设置为system。SQL Server 2008 R2