Max no of users in SSRS - reporting-services

I was working to set up SSRS as a Self Service tool for all the users in an organisation.
Is it possible to have 5000 unique users for SSRS ?
If so, can we set up row level security for each employee ?

Yes you can provide row level security. By providing the individual user permissions to the database and restrict the data returned for your report.
There is no rule as to how many users you can have (I believe it is set to 32767). However depending on what they are doing, the simultaneous user connection number can get limited by your hardware specifications so to not overload your server.

Related

SSRS 2016 - Custom Authentication - Subscription Issue

I have a SSRS 2016 instance that we've implemented a custom authentication module for. The module works perfectly for 100's of users but for a handful, users are unable to create subscriptions.
When those users hit the "Create" button, they receive an error "Something went wrong, please try again later".
There's nothing obvious within the log files.
However - if I look at the Users table within the SSRS database, all affected users have a UserType set to 1. With all other users set to 0.
It seems to much of a coincidence so I'm assuming this is the issue.
Looking at https://learn.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.management.smo.usertype?redirectedfrom=MSDN&view=sql-smo-160 it seems that 1 represents user who user a certificate for authentication. 0 is for username and password.
If I set the UserType to 0 for the affected users, when the user re-logs in, SSRS sets it back to 1.
Does anyone know what SSRS is looking at in order to set that value to 1? Perhaps if I knew the condition being met in order to set that, I can work out why that applies to the handful of users affected.

Power Apps, how to set a variable for all users

I was tasked to make an app for my company that allows it's users to make an appointment at the office to limit the number of people present at the same time.
I have to make it in Microsoft Power Apps.
Can someone give me a hint on how to setup a variable for the user that will stay at that value even after the app is closed. I need them to have a limit of 8 days at the office.
Another variable that I need is how many reservations per day have been done. Same as before it needs to be remembered by the app even when the users leave it, it has to be the same value (330 to be precise) for all the users, and when one makes a reservation, it goes down by one. Another user will then see 329.
Do I need to make a a small data base table and have the values stored there ?
The easiest method would be to make a one row SharePoint list and store your retentive information there.

How to specify different from addresses for difference subscription recipients?

I have an SSRS report that is sent out to different user groups based on the business function. I need the subscription to change the from address depending on who the report is being sent to. For example when the report is for the Finance group it should be sent from Finance#example.com but when it is for the Procurement group it should come from ProcurementAdmin#example.com.
Presently the report is just sent from the address configured in the from field of the subscription settings.
I read in a post somewhere once that changing the owner ID in the Subscriptions table would do it - but that did not change anything for me.
Is there a way to make the from address dynamic in an SSRS subscription?
I'm using SQL Server and SSRS 2008 R2.
The simplest way to do this is to create multiple subscriptions with different from addresses configured. But if you have the Enterprise or Business Intelligence edition of SQL Server there is a better way.
You can accomplish this using a data driven subscription. This allows you to set all of the subscription options with SQL queries. You will need Enterprise or Business Intelligence edition of SQL Server in order to use data driven subscriptions.
I'm assuming your report takes a parameter to determine the type of report (e.g. finance, procurement, etc.)
First go to the Subscriptions section for your report and create a new data-driven subscription:
You then configure your data source for the SQL query that will return your subscription information. Note: this doesn't actually have to rely on tables in the database you can synthesize all of the values in a SELECT statement if that works for you.
You could use a query similar to this to get all of your settings:
SELECT 'finance' AS type,
'finance_report_people#example.com' AS rcptAddr,
'FinanceAdmin#example.com' AS fromAddr
UNION ALL
SELECT 'procurement',
'procurement_report_people#example.com',
'ProcurementAdmin#example.com'
Then the next couple of screens allow you to use the values determined by this query to set various options for the subscription. In this case you would set your parameter value to the type field, your to value would use the rcptAddr field, and you would set your from field with fromAddr.
In this way you can configure dynamic subscriptions that have different recipients, reply to addresses, from addresses, subjects, etc. all based on the parameter value you're passing to the report.

MS Access - record level security

I have an MS Access database where all the users will be in the same group, except a few. I don't need to restrict certain objects from users. Instead, I need to give the current user write capabilities to his record and its related records only and read-only capabilities to all other records. Is this possible?
Unfortunately, be it Access, SQL server or Oracle, the restriction of rows to a single user is not built in. This means you have to build some type of interface in which you grab/use the users Logged on ID (their network pc id, or say prompt for a user + password). Then you when a form loads you have to restrict the records to that one given user. There are many ways to do this and they are all standard approaches to filtering or restricting data. However "YOU" have to build and write such code into the forms. You could perhaps base the form on a query with a expression (VBA or macro TempVars) that limits the records returned to the given user.
So you have to “cook” and “code” this ability for most any database. You thus also need to code to “save” the user name who created the record. This coding requirement as noted is required for most systems when looking to restrict data to single rows and such features are not generally built into the database system. You also likely need to restrict and prevent users from opening the database and seeing the table view.

Ad Hoc reporting with SSRS and shared customer database

I have a database with many customers inside of it. Each row of the table has a customer ID that denotes which customer the data belongs to.
Is it possible to let the end user use Ad-Hoc reporting to build reports, but only let them see data associated to their customer id?
In a report you can use the Built-in field UserID to return the current user's domain name e.g. MYDOMAIN\Username.
If you can create a table mapping customer Ids to domain names and join this to your main data table then you can add a where clause into your dataset query such as
WHERE MappingTable.DomainUsername = #CurrentUser
In the report, create a hidden parameter called CurrentUser and set the value to Globals!UserID.Value
You need to be using Windows authentication in the report data source, where the report users credentials are being passed through to the data source, for this solution to work.
EDIT: I see I misread your original question, which was actually asking if it's possible to allow users to create ad hoc reports while restricting their view of the data. This scenario precludes any solution that is implemented in the reports themselves, since the users will be designing their own reports. Instead, you will probably need to implement some form of security layer in source database, for example using Views. You can use a similar approach to above if your users are using domain logins. For example your view could contain a reference to SUSER_NAME() to limit that data for that particular user.