Report Render In VS2005 Slower Than Stored Proc
Aug 10, 2007
I have searched many forums and found some cases of people also reporting slower rendering in RS than in Management Studio / Query Analyzer. However, none of the other solution suggestions seem to make a difference for me.
I'm a VS/VB developer and have got multiple reports built -- all using stored procedures on the backend -- that all take many times longer to run than if executed via Management Studio (SSMS). My simplest proc takes a couple of parameters (no defaults included) and does a simple select against one table with a few joins. Nothing complicated. It runs in 8 secs for 6867 rows via SSMS. Through RS (running locally through Visual Studio 2005 at this point) it takes around 25-28 secs. Yet, when I'm in the report on the DATA tab (not the PREVIEW tab) the run takes the expected 8 secs ?!?!
All reports are behaving this way.
I am not using cursors.
I have no default values on parameters.
I have added the "WITH RECOMPILE" to the proc statement.
I have "SET NOCOUNT ON" as the first line of the proc.
I hate to say this, but I even connected the proc to Crystal Reports to see how it behaved. It ran in the expected 8 secs.
I've seen some mention by someone that perhaps this is a known issue of RS that it reads the proc twice. Any truth to this?
Also a couple posts have traced and demonstrated that the report is generating significantly more data "reads" via RS than through SSMS.
We're a shop that is considering a switch from Crystal to RS, but we do everything through stored procedures. I need to clear up this issue before I can go forward recommending a switch. I'm including a copy of a typical proc below for review... What am I missing? What's the deal here with RS?
IF OBJECT_ID('dbo.rpt_InactiveAccounts') IS NOT NULL
DROP PROCEDURE dbo.rpt_InactiveAccounts
GO
CREATE PROCEDURE dbo.rpt_InactiveAccounts
(@pRunDate datetime
,@pSalesperson varchar(5000)
,@pIncludeOpen char(1)
)
WITH RECOMPILE
AS
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
-- CREATE/SETUP TEMP TABLE FOR USE IN PARSING MULTI-VALUED STRING INPUTS
DECLARE @NumberPivot TABLE (NumberID INT PRIMARY KEY)
DECLARE @intLoopCounter INT
SELECT @intLoopCounter =0
WHILE @intLoopCounter <=4999 BEGIN
INSERT INTO @NumberPivot
VALUES (@intLoopCounter)
SELECT @intLoopCounter = @intLoopCounter +1
END
-- CREATE TEMP TABLES TO HOLD PARSED VALUES FROM MULTI-VALUE STRING INPUT PARAMETERS
DECLARE @SalespersonTable TABLE
(tmpSalesperson varchar(30))
-- PARSE OUT @pSALESPERSON PARAMETER AND STORE VALUES IN TEMP TABLE
INSERT INTO @SalespersonTable
SELECT SUBSTRING(',' + @pSalesperson + ',', NumberID + 1,
CHARINDEX(',', ',' + @pSalesperson + ',', NumberID + 1) - NumberID -1)
FROM @NumberPivot
WHERE NumberID <= LEN(',' + @pSalesperson + ',') - 1
AND SUBSTRING(',' + @pSalesperson + ',', NumberID, 1) = ','
SELECT DISTINCT
CASE
WHEN s.Name IS NULL THEN '<< OPEN >>'
ELSE s.Name
END As SalespersonName
,c.ClassId
,c.CustId
,c.Name
,c.Addr1
,c.Addr2
,c.Addr3
,c.City
,State
,CASE
WHEN Len(c.Zip) = 9 And CharIndex(' ', c.Zip, 0) = 0 THEN Left(c.Zip, 5) + '-' + Right(c.Zip, 4)
ELSE c.Zip
END As Zip
,ac1.descr As Terms
,ac2.descr As Status
FROM
ACTCustomer c (NOLOCK)
LEFT OUTER JOIN CustSales cs ON c.CustId = cs.CustId
LEFT OUTER JOIN ACTSalesperson s ON cs.SlsId = s.SalesId
INNER JOIN @SalespersonTable st ON s.Name = st.tmpSalesperson OR (s.Name IS NULL AND @pIncludeOpen = 'Y')
INNER JOIN ACTCode ac1 ON ac1.Code = c.Terms And ac1.FieldId = 'CustTerms'
INNER JOIN ACTCode ac2 ON ac2.Code = c.Status And ac2.FieldId = 'Status'
WHERE
c.LastInvcDate <= @pRunDate
And c.ClassId <> 'TR'
ORDER BY
SalespersonName, Name, CustId
View 1 Replies
ADVERTISEMENT
Mar 14, 2008
One of my stored procs, taking one parameter, is running about 2+ minutes. But if I run the same script in the stored proc with the same parameter hardcoded, the query only runs in a couple of seconds. The execution plans are different as well. Any reason why this could happen? TIA.
View 6 Replies
View Related
Jul 20, 2005
I am begginner at best so I hope someone that is better can help.I have a stored procedure that updates a view that I wrote using 2cursors.(Kind of a Inner Loop) I wrote it this way Because I couldn'tdo it using reqular transact SQL.The problem is that this procedure is taking longer and longer to run.Up to 5 hours now! It is anaylizing about 30,000 records. I thinkpartly because we add new records every month.The procedure works like this.The first Cursor stores a unique account and duedate combination fromthe view.It then finds all the accts in the view that have that account duedatecombo and loads them into Cursor 2 this groups them together for datamanipulation. The accounts have to be grouped this way because aaccount can have different due dates and multiple records within eachaccount due date combo and they need to be looked at this way aslittle singular groups.Here is my procedure I hope someone can shead some light on this. Myboss is giving me heck about it. (I think he thinks Girls cant code!)I got this far I hope someone can help me optimize it further.CREATE PROCEDURE dbo.sp_PromiseStatusASBEGINSET NOCOUNT ON/* Global variables */DECLARE @tot_pay moneyDECLARE @rec_upd VARCHAR(1)DECLARE @todays_date varchar(12)DECLARE @mActivityDate2_temp datetimeDECLARE @tot_paydate datetime/* variables for cursor ACT_CUR1*/DECLARE @mAcct_Num1 BIGINTDECLARE @mDueDate1 datetime/* variables for ACT_CUR2 */DECLARE @mAcct_Num2 BIGINTDECLARE @mActivity_Date2 datetimeDECLARE @mPromise_Amt_1 moneyDECLARE @mPromise_Status varchar(3)DECLARE @mCurrent_Due_Amt moneyDECLARE @mDPD intDECLARE @mPromise_Date datetimeSELECT @todays_date =''+CAST(DATEPART(mm,getdate()) AS varchar(2))+'/'+CAST(DATEPART(dd,getdate()) AS varchar(2))+'/'+CAST(DATEPART(yyyy,getdate()) AS varchar(4))+''DECLARE ACT_CUR1 CURSOR FORSELECT DISTINCTA.ACCT_NUM,A.DUE_DATEFROM VWAPPLICABLEPROMISEACTIVITYRECORDS AOPEN ACT_CUR1FETCH NEXT FROM ACT_CUR1 INTO @mAcct_Num1 , @mDueDate1WHILE (@@FETCH_STATUS = 0)BEGINSELECT @rec_upd = 'N 'DECLARE ACT_CUR2 CURSOR FORSELECTB.ACCT_NUM,B.ACTIVITY_DATE,B.PROMISE_AMT_1,B.PROMISE_STATUS,B.CURRENT_DUE_AMT,B.DAYS_DELINQUENT_NUM,B.PROMISE_DATE_1FROM VWAPPLICABLEPROMISEACTIVITYRECORDS B (UPDLOCK)WHERE B.ACCT_NUM = @mAcct_Num1ANDB.DUE_DATE = @mDueDate1ORDER BY B.ACCT_NUM,B.DUE_DATE,B.ACTIVITY_DATE,CASEB.Time_ObtainedWHEN 0 THEN 0ELSE 1END Desc, B.Time_ObtainedOPEN ACT_CUR2FETCH NEXT FROM ACT_CUR2INTO @mAcct_Num2 ,@mActivity_Date2,@mPromise_Amt_1,@mPromise_Status ,@mCurrent_Due_Amt,@mDPD,@mPromise_DateWHILE (@@FETCH_STATUS = 0)BEGIN----CHECK------------------------------------------------------------------------DECLARE @PrintVariable2 VARCHAR (8000)--SELECT @PrintVariable2 = CAST(@MACCT_NUM2 AS VARCHAR)+''+CAST(@MACTIVITY_DATE2 AS VARCHAR)+' '+CAST(@MPROMISE_AMT_1 ASVARCHAR)+' '+CAST(@MPROMISE_STATUS AS VARCHAR)+''+CAST(@mCurrent_Due_Amt AS VARCHAR)+' '+CAST(@mDPD AS VARCHAR)+''+CAST(@mPromise_Date AS VARCHAR)--PRINT @PrintVariable2----ENDCHECK------------------------------------------------------------IF @mDPD >= 30BEGINSELECT @tot_pay = SUM(CONVERT(FLOAT, C.PAY_AMT))FROM vwAplicablePayments CWHERE C.ACCT_NUM = @mAcct_Num2ANDC.ACTIVITY_DATE >= @mActivity_Date2ANDC.ACTIVITY_DATE < @mActivity_Date2 + 15----CHECK------------------------------------------------------------------------DECLARE @PrintVariable3 VARCHAR (8000)--SELECT @PrintVariable3 ='Greater=30 DOLLARS COLLECTED'--PRINT @PrintVariable3----ENDCHECK------------------------------------------------------------ENDELSE IF @mDPD < 30BEGINSELECT @tot_pay = SUM(CONVERT(FLOAT, C.PAY_AMT))FROM vwAplicablePayments CWHERE C.ACCT_NUM = @mAcct_Num2ANDC.ACTIVITY_DATE >= @mActivity_Date2ANDC.ACTIVITY_DATE BETWEEN @mActivity_Date2 AND@mPromise_Date + 5----CHECK----------------------------------------------------------------------DECLARE @PrintVariable4 VARCHAR (8000)--SELECT @PrintVariable4 ='Less 30 DOLLARS COLLECTED'--PRINT @PrintVariable4----END CHECK------------------------------------------------------------END----------------------------------------MY REVISEDLOGIC-------------------------------------------------------IF @rec_upd = 'N'BEGINIF @mDPD >= 30BEGINSELECT @mActivityDate2_temp = @mActivity_Date2 + 15--DECLARE @PrintVariable5 VARCHAR (8000)--SELECT @PrintVariable5 =' GREATER= 30 USING ACTVITY_DATE+15'--PRINT @PrintVariable5ENDELSE IF @mDPD < 30BEGINSELECT @mActivityDate2_temp = @mPromise_Date + 5--DECLARE @PrintVariable6 VARCHAR (8000)--SELECT @PrintVariable6 =' LESS 30 USING PROMISE_DATE+5'--PRINT @PrintVariable6ENDIF @tot_pay >= 0.9 * @mCurrent_Due_Amt--used to be promise amtBEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSET PROMISE_STATUS = 'PK',TOTAL_DOLLARS_COLL = @tot_payWHERE CURRENT OF ACT_CUR2--This statement updates the time that the status was placedinto PK.IF @mPromise_Status IN ('PTP','OP')BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSET Status_Date = @todays_dateWHERE CURRENT OF ACT_CUR2ENDSELECT @rec_upd = 'Y 'ENDIF ((@tot_pay < 0.9 * @mCurrent_Due_Amt) OR @tot_pay IS NULL)AND( @mActivityDate2_temp > @todays_date )--need to put 1dayof month here for snapshot9/01/2004BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSETPROMISE_STATUS = 'OP'WHERE CURRENT OF ACT_CUR2--This statement updates the time that the status was placedinto OP which is the original Activity Date.--The record will hold this date until it goes into PK,PB,orIP.IF @mPromise_Status IN ('PTP','OP')BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSET Status_Date = @mActivity_Date2WHERE CURRENT OF ACT_CUR2ENDENDELSE IF ((@tot_pay < 0.9 * @mCurrent_Due_Amt) OR @tot_pay ISNULL)AND( @mActivityDate2_temp <= @todays_date )--need to put 1dayof month here for snapshot 9/01/2004BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSETPROMISE_STATUS = 'PB',TOTAL_DOLLARS_COLL = case when @tot_pay is nullthen 0 else @tot_pay endWHERE CURRENT OF ACT_CUR2--This statement updates the time that the status was placedinto PB.IF @mPromise_Status IN ('PTP','OP')BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSET Status_Date = @todays_dateWHERE CURRENT OF ACT_CUR2ENDENDENDELSE IF @rec_upd = 'Y'BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSETPROMISE_STATUS = 'IP',TOTAL_DOLLARS_COLL = 0WHERE CURRENT OF ACT_CUR2--This statement updates the time that the status was placedinto IP.IF @mPromise_Status NOT IN ('IP')BEGINUPDATE VWAPPLICABLEPROMISEACTIVITYRECORDSSET Status_Date = @todays_dateWHERE CURRENT OF ACT_CUR2ENDENDFETCH NEXT FROM ACT_CUR2 INTO @mAcct_Num2,@mActivity_Date2,@mPromise_Amt_1,@mPromise_Status ,@mCurrent_Due_Amt,@mDPD,@mPromise_DateENDCLOSE ACT_CUR2DEALLOCATE ACT_CUR2FETCH NEXT FROM ACT_CUR1 INTO @mAcct_Num1 , @mDueDate1ENDCLOSE ACT_CUR1DEALLOCATE ACT_CUR1SET NOCOUNT OFFENDGO
View 15 Replies
View Related
May 13, 2008
Please let me know what type of Traces I can run to identify the underlying cause.
Both setup are in Dev. This is a brain teaser. Same everything but 100x slower.
declare
@AN_CustID int,
@LastName varchar(30),
@FirstName varchar(30)
select @AN_CustID = 2824, @LastName = 'XXXXX', @FirstName = 'XXXXX'
SET NOCOUNT ON
DECLARE @SdxLastName char(4)
DECLARE @TheFirstName varchar(30)
DECLARE @HitCountLastNameOnly int
DECLARE @HitCountFirstName int
DECLARE @ThresholdLastName int
DECLARE @ThresholdFirstName int
-- Set minimum row hit count for when to use the first name in addition to last name for search
SET @ThresholdLastName = 2 --if we get at least this number of rows back, ignore the first name completely
-- Set maximum row hit count for when to use the exact first name instead of first name soundex in addition to last name soundex for search
SET @ThresholdFirstName = 12 --if we get over this number of rows back, look for exact first name match
SELECT
@AN_CustID = ISNULL(@AN_CustID, 0),
@LastName = RTRIM(ISNULL(@LastName, '')),
@FirstName = RTRIM(ISNULL(@FirstName, ''))
IF @AN_CustID < 1 OR @LastName = '' RETURN --required params
-- Whenever a doctor's first name is unknown, the user will enter "DR"; therefore, do not soundex the first name in this case
IF @FirstName='DR.' OR @FirstName='DR' SET @FirstName=''
-- Get the soundex of the specified physician
SELECT @SdxLastName = dbo.aif_Soundex(@LastName), @TheFirstName = dbo.aif_Soundex(@FirstName)
-- Determine how many rows are returned based solely on similarity of the last name
SELECT
@HitCountLastNameOnly = COUNT(*) FROM PhysicianMstr p (NOLOCK)
WHERE
p.AN_CustID = @AN_CustID
AND p.Active = 1
AND @SdxLastName = dbo.aif_Soundex(RTRIM(p.LastName))
-- Check if using just the last name soundex returns too few rows
IF @HitCountLastNameOnly < @ThresholdLastName
BEGIN
-- Determine how many rows are returned based on last name soundex or first name soundex
SELECT
@HitCountFirstName = COUNT(*)
FROM PhysicianMstr p (NOLOCK)
WHERE
p.AN_CustID = @AN_CustID
AND p.Active = 1
AND (
@SdxLastName = dbo.aif_Soundex(RTRIM(p.LastName))
OR @TheFirstName = dbo.aif_Soundex(RTRIM(p.FirstName))
)
-- If too many rows, switch to exact match on first name instead of soundex of first name
IF @HitCountFirstName > @ThresholdFirstName
BEGIN
SET @TheFirstName = @FirstName
SET @HitCountLastNameOnly = -1 --negative value indicates first name exact match, not soundex
END
END
-- List physicians with similar sounding names
SELECT
p.AN_PhysicianID,
pm.AN_CustID,
RTRIM(p.LastName) AS LastName,
RTRIM(p.FirstName) AS FirstName,
RTRIM(p.StateLicNo) AS UPIN,
RTRIM(mis.Specialty) AS Specialty1,
pm.Specialty2,
p.Active,
RTRIM(pm.Degree) AS Degree,
pm.Extra,
p.CreatedBy,
p.CreatedOn,
p.ModifiedBy,
p.ModifiedOn,
p.PLEPhysicianMIID
FROM
PLEPhysicianMstrMI p (NOLOCK)
INNER JOIN PhysicianMstr pm (NOLOCK) ON
p.AN_PhysicianID = pm.AN_PhysicianID
LEFT JOIN PLEPhysicianSpecialtyMstrMI mis (NOLOCK) ON
p.PLEPhysicianSpecialtyMIID = mis.PLEPhysicianSpecialtyMIID
WHERE
pm.AN_CustID = @AN_CustID
AND p.Active = 1
AND (
@SdxLastName = dbo.aif_Soundex(RTRIM(p.LastName))
OR @TheFirstName =
CASE
-- Include first name only when we don't have the minimum number of rows
WHEN @HitCountLastNameOnly < 0 THEN p.FirstName --exact first name match
WHEN @HitCountLastNameOnly < @ThresholdLastName THEN dbo.aif_Soundex(RTRIM(p.FirstName))
ELSE '****' --force false for first name test
END
)
ORDER BY p.LastName, p.FirstName
View 6 Replies
View Related
Jan 31, 2007
Hi. I've got a report with 4 different sections - the datasets coming from some tables that are populated via a stored procedure. I'd love it if the the first thing this report did was run that stored procedure and then the data would be available for the actual reporting piece. Is that possible? And if so, how do I make it work?
Thanks!
View 10 Replies
View Related
Jul 26, 2007
I've got a SQL Reporting Server 2000 SP2 report that takes 3 parameters. FromDT, ToDT, and LocationCD. The first two parameters are free form text fields that expect a date. The last one is a drop down box. For some reason, when I'm viewing the report through the standard reports folder on the report server I have to click the "View Report" button two times to get the report to render. Clicking it just once, doesn't seem to do anything. The report is a line graph.
There are default values in the FromDT and ToDT parameter fields.
Anyone have any ideas what would be causing the need for the second click?
View 2 Replies
View Related
Jan 19, 2007
I have three types of specific reports that i have to create with the input parameters (range) either
1: By date (rdl 1)
2.By Month (rdl 2)
3.By Year (rdl 3)
Is it possible ( or how do I ) to create just one report template ( one rdl) with the three sets of parameters ( hiding/invisible which ever two sets base on user selection) and the output of the report will display the desired type( either by year, month or date).
I ask this because its possible to create a drill down report from year down to date etc in report designer (vs 2005). Not sure if I can create one instead of three rdls and with the 'logic' built within that template.
Thanks
Regards
Alu
View 4 Replies
View Related
Apr 17, 2008
Hello,
I'm using Reporting Services to render a text (stored in sql as varchar(max)). The text is all plain text, with some lines having trailing spaces.
Source text file i've imported to SQL via SSIS:
CLIENT: 10055
STATEMENT 2007
DATE:1002993
THIS IS THE OTHER STATEMENT
COLUMN1 COLUMN2 COLUMN 3
TRY THIS
*Note the trailing spaces on the line before 'STATEMENT 2007'.
I've designed a report using the Report Project in VS2005 to retrieve this text via a stored procedure. When I test the report using the 'Preview' tab in the IDE, it looks good
CLIENT: 10055
STATEMENT 2007
DATE:1002993
THIS IS THE OTHER STATEMENT
COLUMN1 COLUMN2 COLUMN 3
TRY THIS
But when I deploy the report and run it using URL Access:
CLIENT: 10055
STATEMENT 2007
DATE:1002993
THIS IS THE OTHER STATEMENT
COLUMN1 COLUMN2 COLUMN 3
TRY THIS
On all lines with trailing spaces, they (the trailing spaces) have been removed. This is affecting my formatting of some reports and statements. We really want to use the report viewer as it has built in paging, print and export capabilities.
Why does it look okay in VS2005 but different in Report Viewer via URL Access and Report Manager?
Note: When I export as PDF, it looks okay.
The stored procedure I use to return the data is a CLR Hosted assembly as below:
Code Snippet
Partial Public Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub GetPagedDocument(ByVal inText As SqlString)
Dim dr As SqlDataReader
Dim row As New SqlDataRecord(New SqlMetaData("RowText", SqlDbType.Text))
Dim cmd As New SqlCommand("select cast(doc as varchar(max)) as 'DOCTEXT' from testdoc WHERE id='" + inText + "'")
Dim cn As New SqlConnection("context connection=true")
cn.Open()
cmd.Connection = cn
SqlContext.Pipe.SendResultsStart(row) 'initialise the resultset to be returned
dr = cmd.ExecuteReader
'If no records in result set, return.
If Not dr.HasRows Then
row.SetString(0, "There is no document to display or you do not have permission to view the document.")
SqlContext.Pipe.SendResultsRow(row)
SqlContext.Pipe.SendResultsEnd()
' SqlContext.Pipe.Send("There is no document to display.")
Return
End If
'Read rows in the result set
dr.Read()
'Get the entire text
Dim docText As String = dr.Item("DOCTEXT")
'debug
row.SetString(0, docText)
SqlContext.Pipe.SendResultsRow(row)
SqlContext.Pipe.SendResultsEnd()
Return
'end debug
End Sub
End Class
Any help will be appreciated.
View 3 Replies
View Related
Feb 13, 2008
I am working with a large application and am trying to track down a bug. I believe an error that occurs in the stored procedure isbubbling back up to the application and is causing the application not to run. Don't ask why, but we do not have some of the sourcecode that was used to build the application, so I am not able to trace into the code.
So basically I want to examine the stored procedure. If I run the stored procedure through Query Analyzer, I get the following error message:
Msg 2758, Level 16, State 1, Procedure GetPortalSettings, Line 74RAISERROR could not locate entry for error 60002 in sysmessages.
(1 row(s) affected)
(1 row(s) affected)
I don't know if the error message is sufficient enough to cause the application from not running? Does anyone know? If the RAISERROR occursmdiway through the stored procedure, does the stored procedure terminate execution?
Also, Is there a way to trace into a stored procedure through Query Analyzer?
-------------------------------------------As a side note, below is a small portion of my stored proc where the error is being raised:
SELECT @PortalPermissionValue = isnull(max(PermissionValue),0)FROM Permission, PermissionType, #GroupsWHERE Permission.ResourceId = @PortalIdAND Permission.PartyId = #Groups.PartyIdAND Permission.PermissionTypeId = PermissionType.PermissionTypeId
IF @PortalPermissionValue = 0BEGIN RAISERROR (60002, 16, 1) return -3END
View 3 Replies
View Related
Oct 5, 2007
Hello All,
I have a report which throwing this error:
Cannot read the next data row for the data set ALERTSBYSERVERS. (rsErrorReadingNextDataRow) Get Online Help
Arithmetic overflow error converting expression to data type datetime
This report can be viewed on the Visual Studio, but is not rendering it on the Reporting console. Any ideas??
Mannu.
View 4 Replies
View Related
Sep 18, 2007
Hi,
Can anybody tell me if it's possible to set a report to render directly to PDF please. I've found stuff on how to do it via a url but that's not how we want to do it.
Thanks in advance
Steve
View 2 Replies
View Related
Mar 12, 2007
I've got a complex report with many subreports that is running on a reporting services 2005 machine with sp2 installed. The report was working well, producing a 2800 page report in under 10 minutes. I made a change to an expression in a table's column header and one change to the detail and the report stopped working. It would just hang for hours with no messages in the logs.
I tried to simplify what the report server had to do by removing the sum's to the database side's stored proc but that didn't work. I finally managed to get the report to work by removing a totals section to a subreport. I've also had the same hanging condition occur when I merged some columns in the table. I also found a workaround for this problem.
Is anyone else finding problems like this? They don't seem to be code related.
Is there a limit to how complex a report can be in reporting services or the PDF rendering part of the process?
Thanks for any info
View 9 Replies
View Related
Feb 21, 2007
I seem to be unable to pass parameters from a VB .Net application to Reporting Services.
Before I added the parameters to the query, I got all the rows back. So I know the application is basically working. Now that I have added the parameters, I get nothing.
I thought the SetExecutionParameters function would help, but my syntax is wrong and it fails.
I would appreciate any hint as to what step I am missing.
Report setup:
Parameters
Name Value
@Report =Parameters!Report.Value
@Corp =Parameters!Corp.Value
@Dept =Parameters!Dept.Value
Query conditions
WHERE Report = 'BudgetVarianceSummary'
AND PeriodEnd = CONVERT(DateTime,CONVERT(char,GETDATE()- DATEPART(day,GETDATE()),112))
AND Report = @Report
AND Corp = @Corp
AND Dept = @Dept
VB Code snippet:
Dim reportPath As String = "/FinancialReports/BudgetVarianceSummary"
Dim format As String = "PDF"
' Prepare report parameter.
Dim parameters(3) As ParameterValue
parameters(0) = New ParameterValue()
parameters(0).Name = "Report"
parameters(0).Value = "BudgetVarianceSummary"
parameters(1) = New ParameterValue()
parameters(1).Name = "Corp"
parameters(1).Value = "10"
parameters(2) = New ParameterValue()
parameters(2).Name = "Dept"
parameters(2).Value = "7255"
Dim execInfo As New ExecutionInfo
Dim execHeader As New ExecutionHeader()
Dim SessionId As String
Dim extension As String = ""
rs.ExecutionHeaderValue = execHeader
execInfo = rs.LoadReport(reportPath, historyID)
'This line of code fails
'rs.SetExecutionParameters(parameters, "en-us")
result = rs.Render(format, devInfo, extension, encoding, mimeType, warnings, streamIDs)
View 1 Replies
View Related
Feb 4, 2007
I am trying to redo an app that I built to gen reoprts from the command line in a specified format using RS 2000 to use RS 2005. However, I am having a problem using rs.exe to render a report. It looks like the rs.Render method no longer exists. It also looks like you can no longer get to these methods from the rs.exe environment.
Is it still possible to render reports using rs.exe? If so, can somebody please provide an example?
Thank you in advance.
View 6 Replies
View Related
Aug 21, 2007
We have written a C# program in which we want to execute a SQL Report and return the report as a PDF
When we execute our code we get a message that System.Web.Services.Protocols.SoapException: The item '/production/Sudhir' cannot be found. --->
What Is syntax for ReportExecutionService.render(string report)
How do we define the string report?
ReportService.ReportingService rs = new ReportService.ReportingService();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
Byte[] result;
string encoding;
string mimetype;
//ParameterCollection[] parametersUsed = null;
ParameterValue[] parametersUsed = null;
Warning[] warnings = null;
string[] streamids;
result = rs.Render("/production/Sudhir", "PDF", null, null, null, null, null, out encoding, out mimetype, out parametersUsed, out warnings, out streamids);
//System.Web.Services.h Response.ClearContent();
Response.AppendHeader("content-length", result.Length.ToString());
Response.ContentType = "application/pdf";
Response.BinaryWrite(result);
Response.Flush();
Response.Close();
View 1 Replies
View Related
Jan 15, 2008
Hi All,
I have 2 reports that report on baiscally the same thing, just group differently.
Report 1 groups summary phone call stats by Department, Day, and Hour - which are all drop down options.
This means that the department summary stats are shown when the reports are rendered and can be expanded to see daily stats ... the daily stats can then be expanded to see the hourly stats.
Kinda Like:
-------------------------
-Department 1
-10/1/2007
12:00 AM
1:00 AM
+10/2/2007
+Department 2
-------------------------
Report 2 shows the same summary stats by department and extension - which is also a drop down option.
This means that the department summary stats are shown when the reports are rendered and can be expanded to see summary stats for each extension.
Kinda Like:
-------------------------
-Department 1
Ext 2005
Ext 2008
+Department 2
-------------------------
The queries for these reports run from the Management Studio in about 10 seconds each with the Report 1 query returning about 800 rows for the month of October 2007 and the Report 2 query returning about 30 rows for the same date range.
When the reports are rendered, Report 1 (with 800 rows) is rendered in about 20 seconds, while Report 2 (with only 30 rows) takes about 5 minutes to render.
The reports themselves are very similar, with the only difference being the grouping. It is weird that the report that returns the samller Dataset is actually taking longer to render.
One thing I did try was running the queries from the Data tab of the .rdl files (in visual studio) and the query for Report 2 took about 4 minutes to return data, while (as I mentioned above) it ran in about 10 seconds in Management Studio.
Has anyone else run into this?
Any suggestions?
Thanks in advance!
-Matt
View 1 Replies
View Related
Jun 6, 2007
Hi,
I want to display a varbinary field in the reports. the field contains value "<B> example </B>. When viewed in report viewer, it displays the value as such.
How to render it as html output?
thanks.
View 1 Replies
View Related
Oct 16, 2007
I know I can display the time that the report was generated, but can I display how LONG it took for the report to complete?
From when the first query was executed to the time all the data was returned and/or the time it took for the report to be rendered back to the end user?
Thanks!
View 5 Replies
View Related
Mar 5, 2007
Hi,
I am trying to export a report into a format whiich I will then allow the user to make some final editions to prior to printing. Apparently LocalReport>Render does not support word format, however is supports others, what is the best format for me to export a report out into in order to then allow the user to edit it prior to printing, Ideally I would have just liked to lauch ms word and allow the user to edit the report if disired prior ro printing, but if I first export to .mhtml it seems to mess the column widths of the report up when opened in word..
Thanks,
View 2 Replies
View Related
May 15, 2008
Hi,
We have a solution where we from a Windows application (using the report viewer control SP1) display some reports. Some of the reports uses a custom report item to display some graphics. This works fine on a lot of different installations, but now (for some reason) we have a problem at one customer.
We get strange GDI and transport errors when rendering these reports:
"Unable to read data from the transport connection: The connection was closed."
or
"Remote GDI stream version: 10.0.1. Expected version 10.0.1. Offset and length were out of bounds for the array or count is greater than the number of elements from the index to the end of the source collection."
These report work fine when you run them in the browser, but they never work in the report viewer control...
Please provide some help.
Kind Regards
Sune
View 7 Replies
View Related
May 16, 2007
Is it possible to to render direct to PDF when viewing the report url?
View 7 Replies
View Related
Sep 20, 2007
Hi
I wonder if it is possible to create a dataset in code and then feed it to a Reporting Svcs (RS) report and have it rendered on the data from this dataset.
My collegues does this with Crystal and it would break my heart if I cant do this with (RS)...
I have tried to find a solution but so far, no luck.
Anyone have any ideas?
/F
View 3 Replies
View Related
Apr 25, 2008
I have set up a test subscription that sends an email that includes both the report and the url link to the report. However, the report does not render when user clicks on url link in subscription email. The parameter toolbar sorta appears at top of page but buttons are not showing correcty. I saw similiar issue posted in another forum but no one had resolved yet. We all noticed that the subscription email uses /reportserver folder instead of /Reports folder.
The report does appear fine in the email so I believe the problem is the URL.
Can anyone tell me how to resolve?
Thanks,
Tammy
The URL from Report Manager is
http://dss0vw037.svr.us.jpmchase.net/Reports/Pages/Report.aspx?ItemPath=%2fIOC+Metrics%2fDCS+Emergency+Contact+List
The URL in subscription email
http://dss0vw037.svr.us.jpmchase.net/reportserver?%2fIOC+Metrics%2fDCS+Emergency+Contact+List&rs%3aParameterLanguage=en-US
View 1 Replies
View Related
Sep 19, 2007
Hello;
There is any way to put a name to each sheet when using Render Format to Excel file?
Thanks
Luis
View 1 Replies
View Related
Jun 1, 2006
I am wondering if anyone knows how to change the sheet names in Excel when exporting a report from Reporting Services 2005. In other words, I have a report with approximately 5 page breaks built in. When I render the report to Excel, it creates the 5 sheets as I expect, but it names them "Sheet1", "Sheet2", "Sheet3" etc... Is there a way to specify the name of the sheets? I am currently using a different table in my report for each sheet, but I am open to structuring this differently if needed.
View 9 Replies
View Related
Jul 20, 2007
Hi,
I have an application wherein I need to generate a single report(possibly in PDF format) which contains more than one report. Iam using SSRS 2005. In my application Iam using report server url to render reports. The below is URL for rendering single report.
http://servername/ReportServer/Pages/ReportViewer.aspx?reportname&rs%3aCommand=Render&rs%3aFormat=HTML4.0&rc%3aToolbar=true
Is it possible to render multiple reports into a single report ?
Can anyone help me in this regard ?
Thanks,
S V Ramakrishna
View 2 Replies
View Related
Oct 24, 2007
We have a procedure that does some complicated table joins to populate a temporary table (declared in the proc) and then extraneous rows are removed from the table and the remaining rows are returned.
On the production server the procedure takes 22 seconds, but the identical query in a dynamic session window of SQL Server Management Studio takes 2 seconds. That doesn't make any sense.
We've profiled the procedure and discovered that the small loop at the end of the query runs through twice with each iteration taking 10 seconds. Again - the same section (but dynamic) profiles in at 0 seconds. We further narrowed it down to the compound delete statement from the @tblResults table.
Here's the looped section of code:
-- now delete the entries with no content
declare @deleted int
set @deleted = 1
declare @tmp table ([Id] int)
while @deleted <> 0
begin
delete from @tmp
-- get all entries with no child nodes
insert into @tmp ([Id])
select distinct r.[id] from @tblResults r
where r.[id] not in
(
select [Id] from @tblResults
where [Id] in (select distinct ParentId from @tblResults)
)
-- delete entries with no documents and region match
-- (this is where the slowdown occurs)
delete from @tblResults
where [id] in
(
select t.[id] from @tmp t where t.[id] not in
(select distinct dm.metatagid from documentmetatag dm
where dm.documentid in
(select distinct dr.documentid from documentregion dr, @region r
where (dr.regionid = r.regionId or @regionIds is null)
)
)
)
select @deleted = @@rowcount
end
We then return all rows from the @tblResults table.
We are totally stumped on why the procedure would take so much longer than running the same query in a SQL Manager window. Is there some issue with temporary tables as variables in a procedure? Any ideas anyone?
Thanks,
John
View 5 Replies
View Related
Jun 29, 2006
Hi,
I am sure there is a thread about that one but I cannot find it.
I have a server which does not include the correct link with the subsciptions.
I create a subscription and ask to include the link to the reporet, I get the report with the machine name instead of the DNS name.
i.e. i get
The report is accessible at the following address:
http://atlanta/reportserver/...
instead of http://reporting.onsemi.com/reports/....
I tried to edit rswebapplication.config like that
<ReportServerUrl>reporting.onsemi.com</ReportServerUrl>
and rsreportserver.config like that
<DefaultHostName>onsemi.com</DefaultHostName>
but still cannot get the correct URL in the subscription.
Any idea?
Thanks,
Philippe
View 4 Replies
View Related
Jan 17, 2008
Hi Everyone i wonder if there anyone know
what is "Render report with most recent data" and execution SnapShot and the different between them
and also it will be great of someone provide me with blog or a link that describe these 2 properties
Thanx
Maylo
View 1 Replies
View Related
May 2, 2007
Hi there,
Is there a way to programmatically save a RS results into Excel format using the render method ?
I had read about that capability but I can't seem to find any sample code on how to do it. Is this a parameter that you have to set in the render method ?
Any suggestion or tips are much appreciated !
Thanks !
View 5 Replies
View Related
Dec 4, 2007
I am trying to modify a stored procedure written by a consultant for our company. I have my changes made in a script file, and the query will run in about a minute. However, after I made the changes to the stored procedure, it is taking over 5 minutes to run. The procedure uses several temporary table variables, and inserts records into those tables. The results are selected from those table variables joined to other tables.
Why would this be?
View 8 Replies
View Related
Sep 30, 2015
I know that SSRS default rendering formats is HTML. is there anyway we can change this behaviour to render in XM format for specific reports.
View 5 Replies
View Related
Mar 1, 2008
hi, friends, please look at this:
I have a SSIS package, and inside it I do something like below:
1. I have a SQL component, to give back a object to store the records.
2. I have a VB script component, I direct the object I got in 1 step into the script as a dataset.
My problem is:
I run the package in the SQL SERVER 2005 Store Procedue like this:
do
dtexec.exe package.dtsx
loop untill i>t
I control the it runs 30 times. But I found that the speed is slower and slower.
the first time, it takes about 600 s, but the last time, it takes the 1800 s.
Why?
The package don't drop the object it create during the loop in the Store Procedue ?
Thanks!
View 11 Replies
View Related