Custom Timed Subscription Schedules in SSRS - sql-server

I see that in the SQL Server Reporting Services 2005 Report Manager there is the capability to schedule reports for specific times (i.e. every weekday at a particular time).
What I would like though is more control -- i.e. every weekday, but only between certain dates of the year -- for example, getting sales figures every day starting 6 weeks before Christmas and ending 1 week after Christmas. There is a table that has the dates. How do I set that up in SQL Server Reporting Services 2005?

If you have Enterprise Edition you can create a Data Driven Subscription, whereby you generate a table of the report recipients and parameters and then point the report subscription to the table. You have complete control over how the table gets populated so you can make sure it only gets populated on the days you want the report to go out (the subscription would run every day but if the table is empty, it doesn't go out to anyone).

You can do what you ask in SSRS.
At the bottom of the Schedule details form, you can specify a start date and end date for the subscription.
You would however need to update those dates every year but you can setup a SSIS job to to that. You need to update the "StartDate" and "EndDate" columns in the "Schedule" table in your reporting services database (default name is "ReportServer").

I don't think there is a way to customize the Report Manager interface to show the custom schedule because there is a part of it that is managed by SSIS.
Yes you can remove the Subscription feature for some users. You can do that in SSMS, when connected to your report Server, in the Security | Roles section. The permission that manages the subscription feature is named : "Manage individual subscriptions". By removing it, your end users won't be able to create or update their subscriptions schedules.
Hope this helps!

Create a data driven subscription which calls a procedure, the procedure will determine the correct day (lets say, 1st business day of month). Have the schedule run every day, it will fire off the procedure which will only return on the specific day.

Related

Create a job in Microsoft SQL Server Management Studio

I would like to create a job in the Management studio. This job needs to check if there are "new" or if there are "changes" in one table of access. This must run every 5 min.
If I create the job the next pop up will come.
What should I fill in the command section?
The check must come from this table "GRV_Audit_ChangesCreditorBankaccount"
It really depends on what you're trying to do -- send an email notifying of the insert/update, record details of the insert/update in another table or database, or even rollback or prevent the insert/update.
The possibilities are numerous.
You probably need to ask yourself (or your boss or whomever made the request): What action do you want to take place when data in the target table(s) is updated or inserted?
It may well turn out that a SQL Agent job isn't fit for purpose. You may end up looking at triggers or database auditing to achieve your goal.
You could try investigating this as a possible solution...
Create an empty table with the same structure as your bank account numbers table.
Add an AFTER TRIGGER on your original table that additionally inserts data into your new table whenever the original table is updated
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-ver15
Alternatively, if you are on SQL Server 2016 or greater, you could implement your bank account numbers table as a temporal table, which more or less does the same as the above automatically.
https://learn.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-ver15

SQL Server best approch to append table data into Oracle database table

I have a table for bio-metric devices which capture the data as soon as the employees punch their fingers and uses SQL Server 2014 Standard Edition.
However, our legacy devices were exporting log files and we used a vb engine to push to our Oracle table and used to generate the attendance details.
I managed to export the data from SQL Server and built the first set of records. I would like to schedule a JOB with SQL Server with a condition that the Oracle table should receive ONLY the rows those are NOT already inserted from the SQL Server table.
I checked the append possibilities, which dumps the entire SQL Server table data when the job is executed thus duplicating the rows within the Oracle target table, forcing me to discard the job and to build a new one that deletes the Oracle table and recreates when the job is executed. I feel this is a kind of overkill...
Any known methods available to append only the rows those are NOT existing in the Oracle target table? Unfortunately the SQL Server tables doesn't have any unique id column for the transaction.
Please suggest
Thanks in advance
I think the best way is to use sal server replication with Oracle database as subscriber.
You can read about this solution on MSDN site:
Oracle Subscribers
Regards
Giova
Since you're talking about attendance data for something like an electronic time card, you could just send the data where the punch time is > the last time stamp synced. You would need to maintain that value some where, and it doesn't take into account retro actively entered records. If there's a record creation date in addition to the punch time you could use the created date. Further if there is a modified date in the record you could look into using the merge statement as Alex Pool suggested so you could get both new records and modifications synced to oracle.

SQL-Server generate data row once per day

I'm quite a newbie to the topic databases. It may be that the topic
already exists, but I don't even know how to search for it.
How to query and so on seems to be no problem.
And how to write a trigger on an INSERT/DELETE/UPDATE statement is known too.
I would like to know if it is possible to execute some code to generate a data row
every day once at a specific time without an external programm.
Thanks, Chris
PS: I'm from Germany, so don't get angry about my expressions, please^^
If you are not in an Express Edition you may create an SQL Job to do that.
Open SSMS
Drill Down your server instance
Drill Down SQL Server Agent
Right click Jobs folder
Chose New Job
Fill in the details in the General Tab
Go to the Steps tab
Click New
Enter a name, choose which db to run against and enter your SQL statement.
Go to Schedules tab
Add a schedule to run once each day at the time you wish.

Automating SQL server reports execution

Hi I have question is there any way to automatically execute SSRS reports for example user goes to ssrs and put some parameters to execute reports and exports them in excel and pdf . Is there any way to avoid human interaction and automate the whole process or any job in C# code runs automatically reports and exports them in format.
Regards
A Reporting Services subscription is a configuration that delivers a report at a specific time or in response to an event, and in a file format that you specify. For example, every Wednesday, save the MonthlySales.rdl report as a Microsoft Word document to a file share.
Subscriptions can be used to schedule and automate the delivery of a report and with a specific set of report parameter values.
You can create multiple subscriptions for a single report to vary the subscription options; for example, you can specify different parameter values to produce three versions of a report, such as a Western region sales report, Eastern region sales, and all sales.
FROM: http://msdn.microsoft.com/en-us/library/ms159762.aspx
And for how to configure a subscription to deliver a report by e-mail, check here http://technet.microsoft.com/en-us/library/cc872783.aspx
And if you need to do programmatically, you can start here http://www.codeproject.com/Articles/36009/Programmatically-Playing-With-SSRS-Subscriptions
If you don't want to use subscriptions, you can write your own program in C# to pass the parameters and render the report and save in whatever format you like. Then run this using Windows scheduler or however you want to.
It is quite easy and Microsoft have some example code to get you started.

SSRS Subscriptions - Daily Emails Within a Time Interval

I need to setup a subscription to an SSRS report that I have, so it would send emails Daily between 5PM and 5AM only. Is this supported by SSRS 2005 or 2008?
My only option right now is to set up 12 different copies of the report and have 12 different subscriptions, for 5PM, 6PM, 7PM...4AM, 5AM etc. I don't like this approach for the maintenance complexity it adds.
Is there a better way to do this?
Thanks,
Nandun
Not through Report Manager; you've already seen that you have limited options there.
However, when you set up an SSRS subscription, behind the scenes it's just set up as a normal SQL Server job run through the SQL Server Agent - these jobs are set up under a GUID type name, i.e. something like 8DF42130-97D3-41F7-B3EF-72E48BFDFBFA.
This means that you can update the job schedule in Management Studio with a few more options:
You should be able to update a SSRS created subscription to suit your requirements.
Not sure why you can't just do this through Report Manager, but hopefully this will help.

Resources