0
600
秒为SSRS数据库服务器设置远程查询超时0
KeepAlive
属性= 30000
BIDS在查看报告的“预览”标签时返回的错误在大约1分钟后出现(查询在SSMS中需要约1分10秒 - 编辑:2012-10-16 < / strong>现在通过将报告部署到Report Manager并尝试运行报告来复制SSRS本身的错误:下面添加了异常堆栈跟踪<)>:
本地报告处理期间发生错误。
报告处理期间发生错误。
数据集“MainData”的查询执行失败。
从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误:0 - 指定的网络名称不再可用。)
db_datareader
权限,并且在SSMS中正常运行。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
/**********************************************************
CTE to be used to clean strings
***********************************************************/
;WITH
CTE_1 AS ( SELECT SomeData )
,CTE_2 AS ( SELECT SomeData )
,Recursive_CTE AS ( SELECT SomeData ) -- String cleaning performed here
,CTE_3 AS ( SELECT SomeData )
/**************************
Data set returned here
***************************/
SELECT
Column_1
,Column_2
,Column_3
.
.
.
,Column_n
FROM
Fact
INNER JOIN Dimension_1 AS 1 ON Fact.Key_1 = 1.Key_1
INNER JOIN Dimension_2 AS 2 ON Fact.Key_2 = 2.Key_2
INNER JOIN Dimension_3 AS 3 ON Fact.Key_4 = 3.Key_3
INNER JOIN Dimension_5 AS 4 ON Fact.Key_4 = 4.Key_4
LEFT JOIN CTE_3 AS clean ON 4.Key_4 = clean.Key_4 -- Clean names returned in query and used in GROUP BY clause
WHERE
Condition_1 = Test_1
AND Condition_2 = Test_2
AND Condition_3 = Test_3
.
.
.
AND Condition_n = Test_n
GROUP BY
Group_1
,Group_2
,Group_3
.
.
.
,Group_n
ORDER BY
Group_1
,Group_2
,Group_3
.
.
.
,Group_n
PRIMARY KEY CLUSTERED INDEXES
2012年10月15日
二零一二年十月十六日
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'DataSet1'., ;
Info: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'DataSet1'. ---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.DataExtensions.SqlCommandWrapperExtension.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.OnDemandProcessing.RuntimeDataSet.RunDataSetQuery()
--- End of inner exception stack trace ---
KeepAlive
属性设置为30000
,即30秒 - &gt;丢失连接的可能原因是什么?Tools > Options > Database Tools > Query and View Designers > Cancel long running query
(设置为30秒)。没有变化(这个客户端设置也不会影响报告一旦部署到SSRS服务器我相信,但我想我会试一试)OBDC connection attempt when server is not ready to process a new local connection, possibly due to overload
的{{3}} - &gt;当SSRS将查询提交给DWH服务器时,递归CTE会导致这样的重载(即使我没有进行ODBC连接)?? 答案 0 :(得分:0)
首先,你必须找到问题。
您可以查看运行Profiler打开报告时发生的情况吗? 使用事件启动跟踪审核登录,审核注销,异常,SQL:Stmt:正在启动/已完成。 在您尝试打开报告后,请检查结果并告知我们。
答案 1 :(得分:0)
建议:当查询变得复杂并且SSRS开始抱怨时,将查询包装到数据库内的视图或存储过程中,在SSMS中测试新的(更简单的)查询,然后查看相同的简单查询是否有效在SSRS。
在所有情况下,使用SQL Server Profiler和其他诊断工具来查看数据库实际上在做什么。
答案 2 :(得分:0)
似乎是超时问题......但请尝试以下方法:
如果您想确保不使用相同的执行计划,请尝试选项(重新编译)以使用其他计划。
这可能/可能不会导致解决问题但至少你会缩小范围并检索你在SSMS中所做的数据。
答案 3 :(得分:0)
当尝试从大量写入的数据库中读取时遇到此错误。
SQLEXCEPTION: Transaction was deadlocked on lock resources with another process and has been chosen as the deadlock victim.
这将导致您描述的SSRS行为,并在日志中显示以下线索:
---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)
如果这是您的问题,请尝试以下操作:
答案 4 :(得分:0)
一个新答案提示我写这个答案以结束问题,尽管尚未完全验证,但尽我所能,更高版本的SQL Server工具中不会出现此问题知识(即现在将在各种工具上产生相同的结果)。
(从内存中)原因是SSMS vs SSRS使用不同的客户端连接,在2008版本中,我认为SSRS使用的是ADO.Net连接器,SSMS使用的是不同的东西(不记得现在的样子)。
在研究此问题时(5-6年前),我碰到了一篇老文章,它基本上列出了SQL Server堆栈工具之间的不同客户端连接类型(我刚刚尝试再次搜索30分钟以查找它,但是鉴于这些工具已经有10年的历史了,所以我没有找到它)。我还记得我曾在2012年或2014年左右发布过一篇微软的文章,说所有工具都将对客户端类型进行标准化。
因此,除非您使用的是2008年(或更低版本)的工具,否则您将不会遇到它在SSMS中有效但在SSRS中失败的问题,这可能会在两者中均无效,或者在两者中均有效。
如果您仍在使用SSMS 2008,我相信您可以设置一个高级查询执行选项,请尝试在以下位置查找连接客户端类型选项:
Tools > Options... > Query Execution > SQL Server > General
Tools > Options... > Query Execution > SQL Server > Advanced