SSRS 2017 subscriptions stopped working after installing KB4583457 - sql-server

2 weeks ago we installed KB4583457 on SQL Server 2017 Standard (14.0.3294.2). For some reason, it broke something in the system databases of SQL Server and the server became unavailable. We had to uninstall this update to resolve the issue. It helped and everything, except SSRS subscriptions, started working fine again. But SSRS subscriptions behave weird since then. No email has been sent and if we try to trigger any subscription manually (using [Run Now] button), it doesn't work, or to be more precise - it gets stuck in 'Running' state.
I realize something's probably wrong with our instance of SQL Server/SSRS. But I'd really appreciate if someone can suggest an idea or advise what else we can check. Here's what we've checked so far:
Logs of SSRS in Program files - nothing there.
Windows events logs - nothing relevant there.
SQL Configuration Manager - all services (except SQL Server Browser) are up & running.
Reporting Services Configuration Manager - nothing has changed and everything looks OK.
SSRS Web Portal - the reports work as expected, including the export to various formats.
SSRS API - no issues.
The history of SQL Agent jobs created by SSRS subscriptions - all jobs continue to run by schedule. So the history of SQL agent jobs is not consistent with what is displayed on SSRS portal in the 'Last run' column of any subscription.
The owner of all SQL agent jobs linked to SSRS subscriptions is 'NT SERVICE\SQLServerReportingServices', which has db_owner permissions to ReportServer and ResportServerTemp databases.
ReportServer database - we used the script bellow to find any clue that might point us in the right direction. But it doesn't show any useful error messages.
select
c.Name as Report,
s.LastRunTime,
s.SubscriptionID,
s.*
from [ReportServer].[dbo].[Subscriptions] as S
inner join [ReportServer].[dbo].[Catalog] as c
on c.ItemID = s.Report_OID
order by s.LastRunTime desc
If someone has any other ideas, please feel free to share.

Thanks, it turned out the issue was related to the permissions of NT Service\SQLServerReportingServices user. The screenshot below shows what had to be updated - Execute permission on dbo.sp_verify_job_identifiers stored procedure. Hopefully it will save someone hours or even days.
It's important to note we would be able to identify the root problem earlier if we had looked through the Logs of SSRS in Program files folder not only for the current day but also the old ones.
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\LogFiles

Related

SSRS Report fails when trying to run Oracle Stored Procedure

I have an issue whereby I can execute an SSRS report which calls an Oracle Stored Procedure in VS2017, but when I deploy to the SSRS Server and run, it returns the following message:-
• An error has occurred during report processing. (rsProcessingAborted)
o Query execution failed for dataset 'spTestSubDet'. (rsErrorExecutingCommand)
For more information about this error navigate to the report server on the local server machine, or enable remote errors
The dataset 'spTestSubDet' is the Oracle Stored Proc.
Some configuration details:-
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
SSRS version is 15.0.19528.0.
SQL Server version is 2014.
I can execute SQL code and Views against the Oracle server with the same DSN from the deployed report (without the oracle stored proc being present), so I know the DSN configuration is not the issue.
I have also check marked the "Use single transaction when processing the queries" box in the DS Properties.
I’m guessing that it might be some form of “Execute” permissions issue on Oracle, rather than the Report Server, where the Stored Proc is concerned.
As a developer, I don’t have any DBA permissions to interrogate how the SSRS Server is set up, or the Oracle DB, so any suggestions will have to be passed on to my ICT dept.
I also can't enable "remote errors" on the Report Server, but have requested that with the ICT dept.
Any help greatly appreciated.
Seems I got lucky with enabling “Remote Errors” on the report server and not personally having to restart the service.
I now have a more explicit error message from the SSRS report:-
“ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'SPTESTSUBDET' ORA-06550: line 1, column 7: PL/SQL: Statement ignored”
As mentioned in my original post, the report works fine locally from VS2017, so I don’t know why it’s telling me when deployed and run from the server that there seems to be a problem with the SQL code:-
create or replace
PROCEDURE SPTESTSUBDET
(s1 OUT SYS_REFCURSOR)
IS
BEGIN
OPEN s1 FOR
SELECT
*
FROM
onemain.sbceysubmitted sbceysub
WHERE
sbceysub.STUD_ID = 167071
;
END SPTESTSUBDET;
It’s as simple a test as I can put together and doesn’t use any parameters to complicate things.
I’m wondering if it might be a driver issue, though why it works locally and not on the server is baffling me.
I have Oracle Developer tools “ODAC v18.3.0” installed for VS2017.
The user in the referenced post below had what looked like to be the same problem, but it's not clear what version of the ODAC tools has been used to resolve the issue:-
https://stackoverflow.com/a/60569788/2053847
Any thoughts/help greatly appreciated.
The easiest thing to do is check the log files. I bet this is a SQL exception and it is related to something wrong with the way you are calling the stored procedure or within the stored procedure itself. The log files reside on the SSRS instance at -> SQL SERVER INTALL DIR\MSSQL.15(OR OTHER SSRS VERSION DIR)\Reporting Service\Log Files. Log files for the SSRS manager and SSRS service are saved here. Open the log for the SSRS Service after you encounter the error search for "spTestSubDet" and you should see the detail of the exception that is causing your problems.

Snowflake SSRS ODBC error : No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command

I'm using SSRS (SQL Server reporting services) to display reports, my datasource is Snowflake
I have installed the ODBC snowflake driver and configured it properly
Click here to view the ODBC configuration
I have created a shared datasource on the SSRS server (via Report manager) and put in my own credentials and the connection works fine
Click here to view the connection on the SSRS Server
I'm able to build the SSRS report without any issues, when I run the report, everything works fine, I can publish the report on the server and the report renders perfectly fine on the browser
The issue is when i go back to the report the next day, i'm presented with an error:
An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset
'insert_name_of_my_dataset_here'. (rsErrorExecutingCommand)
ERROR [57P03] No active warehouse selected in the current session.
Select an active warehouse with the 'use warehouse' command.
So, this also means that the following doesn't work neither:
Subscriptions
Cache refresh
Snapshots
The only thing that works is if I open my report in SSRS Report builder, I right-click EACH of my datasets ("each" is very important, it doesn't work if i don't do all of them), I run the queries manually for each of them, and then the "connection" or "session" is "re-activated" and the report runs fine, both locally AND on the server...note i do not have to re-publish the report on the server for it to run
Click here to view screenshots of my process
Steps I have taken to addresss the issue (that didn't yield any resolution):
I have tried putting the "use warehouse WAREHOUSE_NAME;" command before each dataset's SQL script, but Snowflake's API doesn't allow multiple SQL commands to be sent, so I already saw that this functionality was in the development pipeline for Snowflake and found this link: https://github.com/snowflakedb/snowflake-connector-net/issues/33 - this work was started in 2018 and the last update dates from Apr 2019 that says they are starting to address the JDBC driver...no mention for the ODBC driver yet
I have set the snowflake parameter client-session-keep-alive to true (https://docs.snowflake.com/en/sql-reference/parameters.html#client-session-keep-alive), but according to the community portal: A similar "keep alive" parameter is not currently available for the ODBC driver. Instead, you could issue a dummy query every few hours to keep the connection alive. (https://community.snowflake.com/s/article/faq-how-long-can-my-jdbcodbc-connection-remain-idle)
List item
I have tried to create a cache refresh plan or a snapshot schedule that creates a snapshot or caches the report every 3 hours, and it works for the first schedule, but fails with the error for the other ones
The only thing I didn't try is to have snowflake never close the connection and keep the warehouse in the "started" state indefinitely...but this would increase my cost, and i'm pretty sure it won't work since the session would end anyways after 4 hours...
Any assistance is welcome!
Thanks
Specs:
SSRS 2014
Snowflake X-small
ODBC-64 bit driver, installed from the
snowflake driver repository (tested with 32-bit also, but 64-bit is
the one that is visible to SSRS)
I faced the same kind of issue and fixed adding the corresponding role with the data warehouse.
In the data warehouse add role with USAGE.
Could it be related with the data warehouse name (in the ODBC settings)? Is there a typo? COSNUMER_WH or CONSUMER_WH?
I strongly recommend setting default "context" configurations for situations like this, setting default role, warehouse, database, and schema with commands such as this:
ALTER USER xyz SET DEFAULT_WAREHOUSE = 'WH_NAME_HERE' ;
https://docs.snowflake.com/en/sql-reference/sql/alter-user.html

SSRS Ad-Hoc report stuck on loading screen

I'm seeing a bizarre issue that is occurring daily when trying to run a report via the SSRS portal. Upon clicking the report, the entire screen grays out and pops up a Loading notification, which never advances. This is not the Loading message you get when running the report. The process never gets to the report screen (no report menu items, etc.). There are no errors in the log files, and the report execution is not attempted (nothing in the execution log in the ReportServer database for these reports). I've tried setting the recycle time to several days out then restarted the service, but the issue recurred the next day, even within less than the 12 hours of the default setting. The only thing that clears the issue is a restart of the Reporting Services service. This seems to work the rest of the day, but the following morning, ad hoc reports won't run. All scheduled reports are running successfully so this appears to be an issue with the portal. When this occurs, the same loading screen appears when trying to view subscriptions. All other functions on the portal seem to work.
Environment is as follows:
2 servers (1 RDBMS, 1 SSRS)
SQL Server 2016 (13.0.4260 for SSRS)
SQL Server 2016 (13.0.4466.4 for RDBMS)
Windows Server 2012 R2

Sql Server Reporting Service (SSRS) 2005 Operation timeout issue

I know similar questions have been asked before...
I am using SQL server 2005, with SSRS 2005 installed on the same box. (aka. production DB, Report DB/TempDB, Database engine, and SSRS all in the same box).
We have about 200 reports deployed in the box.
SSRS/DB is running on a W2k3 64-bit VM.
Now the problem...
Occasionally almost on a daily basis our users get the 'operation timeout' error (error in XML document....). At first I thought it was a report size problem, but then when I try the Report Manager URL (http://<>/reports), nothing appears on the browser. The only thing I can do is to recycle the Report server IIS pool and it will work again. Everytime when the 'operation timeout' happens, the Report Manager URL will not work, and I can't find any logs in IIS to indicate there's a problem.
I researched on the net and found that some people have put a dummy report as part of the SQL server agent job which runs every 10 minutes from 9-5 to 'warm up' the SSRS. The dummy report made a small connection to the DB on one row from a very small table. The operation timeout problem seems to have disappeared for 95% of time, but it still happens. Strange enough, when the operation timeout problem happens, I notice the dummy report job has also stopped working. In this case, I had to recycle the IIS pool, and start the SQL server job again, and then SSRS will work again (until the same problem happens next time)
The error I got from the SQL server job is:
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host
However I am totally confused by how the IIS issue on the report server somehow affects the SSRS job. Maybe I am on the wrong track but that's bizzare.
My observation so far is if it takes forever for the Report Manager URL (http://<>/reports) to appear it is a bad sign that something has gone terribly wrong on SSRS.
I have also added a new task which call the SSRS Report Manager http://<>/reports URL using PowerShell in order to 'warm-up' the IIS but it does not seem to make much difference.
Can someone point me to the right direction? Thanks. WM
In the past, after much research, I've found memory allocation for SSRS to be the root of many issues. You can try this.
Add the following into the <Service> node in the rsreportserver.config file
<WorkingSetMaximum>4000000</WorkingSetMaximum>
The file is typically in c:\program files\Microsoft SQL Server\MSRS11.iMIS\Reporting Services\ReportServer
This sets the maximum memory available for the report which also set the minimum memory to 60% of the maximum.
https://msdn.microsoft.com/en-us/library/ms159206(v=sql.110).aspx

SSRS Subscription failure rsProcessingAborted

I have subscriptions that are failing to run giving the error:
Failure sending mail: An error has occurred during report processing.Mail will not be resent.
The report runs fine when requested manually through the server so I know the datasource and connection work.
Inside the SSRS database the only information I can get is from the ExecutionLogStorage saying:
rsProcessingAborted
The ExecutionLogStorage table also shows the TimeStart and TimeEnd being 1 second apart, on a report that takes 2+ minutes to run manually. The report has not failed a single time when running manually, only fails through the subscription.
The windows event viewer does contain some errors about a TERADATA extension but they do not coincide with the subscription failures.
The logs located in \Program Files\Microsoft SQL Server\MSRS10_50.Reporting\Reporting Services\LogFiles do not even contain an entry for that subscription during failure at all.
I'm not sure where to go for more information, I need to know why this subscription is failing, we have the workaround of manually running the report and manually emailing it out after converted to excel but that's not a viable solution going forward.
Some other places you could check are:
SSRS Log:
c$\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\LogFiles
You could try enabling verbose logging (level 4) here
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\bin\ReportingServicesService.exe.config
Look for this tag:
<switches>
<add name="DefaultTraceSwitch" value="4" />
</switches>
I'm fighting very similar issue but to make it a bit complex, my subscription fails only every other time or so and runs fine sometimes. So far I ruled out:
No. of parallel SSRS sessions
Memory pressure on DB server & Report
Server Kicking off the subscription directly vs remotely(running
the agent job)
Sorry, I do not have a good answer for you but this issue seems to bother more than few people.
Update:
I found out that the Subscription was a created by a windows user who is no longer valid (ID expired). Updating the Subscription owner fixed it.
-- List SSRS users (check to make sure the new Owner exists in this list)
SELECT *
FROM Users
WHERE UserName IN ('DomainName\_SSRSServiceAccount')
-- DFGRYH-DFGRYH--DFGRYH-DFGRYH
-- Identify the subscription whose ownership you would like to edit
SELECT *
FROM Subscriptions
WHERE OwnerID = 'DFGRYH-DFGRYH--DFGRYH-DFGRYH'
AND Description = 'Send e-mail to RichG#DomainName.com'
ORDER BY LastRunTime
,LastStatus
-- Update the Subscription with new Owner, the change should reflect on the SSRS reports
UPDATE Subscriptions
SET OwnerID = 'DFGRYH-DFGRYH--DFGRYH-DFGRYH'
WHERE SubscriptionID = 'B33A78FC-933D-47DB-AB50-43D36B24C0B8'

Resources