Adr*_*rie 7 bids sql-server-2008 ssrs-2008
0600 为SSRS DB服务器设置远程查询超时的秒数0KeepAliveSQL Server的TCP/IP 属性=30000BIDS在查看报告的"预览"选项卡时返回的错误在大约1分钟后出现(SSMS中的查询需要大约1分10秒 - 编辑:2012-10-16现在已经在SSRS中复制了错误通过将报告部署到Report Manager并尝试运行报告:下面添加了异常堆栈跟踪):
本地报告处理期间发生错误.
报告处理期间发生错误.
数据集"MainData"的查询执行失败.
从服务器接收结果时发生传输级错误.(提供程序:TCP提供程序,错误:0 - 指定的网络名称不再可用.)
db_datareader针对prod和dev db服务器的最终用户帐户进行了测试,并且在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
Run Code Online (Sandbox Code Playgroud)
PRIMARY KEY CLUSTERED INDEXES2012年10月15日
2012年10月16日
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 ---
Run Code Online (Sandbox Code Playgroud)
KeepAlive属性设置为30000,即30秒 - >可能导致连接断开?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- >当SSRS将查询提交给DWH服务器时,可能递归CTE导致这样的重载(即使我没有进行ODBC连接)?一个新的答案促使我写下这个答案来结束问题,尽管这还没有完全验证,但据我所知,该问题不会出现在更高版本的 SQL Server 工具中(即现在跨工具的相同结果将发生)。
原因(据记忆)是 SSMS 与 SSRS 使用不同的客户端连接,在 2008 版本中,我相信 SSRS 使用 ADO.Net 连接器,而 SSMS 使用不同的东西(不记得现在是什么)。
我在研究这个问题时遇到了一篇旧文章(5-6年前),它基本上列出了SQL Server堆栈工具之间不同的客户端连接类型(我刚刚再次尝试搜索30分钟才找到它,但是鉴于这些工具已经有 10 年历史了,我没能找到它)。我还记得在 2012 年或 2014 年左右看到 Microsoft 发表的一篇文章,其中提到客户端类型将在所有工具中实现标准化。
因此,除非您使用 2008 版工具(或更低版本),否则您不会遇到在 SSMS 中工作但在 SSRS 中失败的问题,它可能在两者中都失败,或者在两者中都工作。
如果您仍在使用 SSMS 2008,我相信您可以设置一个高级查询执行选项,请尝试在以下位置查找连接客户端类型选项:
Tools > Options... > Query Execution > SQL Server > GeneralTools > Options... > Query Execution > SQL Server > Advanced| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |