Permissions Error querying ReportServer - reporting-services

I have query in a stored procedure in my database which does
SELECT [Name]
FROM ReportServer.dbo.Catalog
This works fine when I log onto my PC and SSMS using Windows Authentication.
This stored procedure is used in a data set called 'Reports' in a Report.
However, when I launch a browser and navigate to
http://localhost/reports/browse/
and select that report, I get the following error shown and logged:
e ERROR: An exception has occurred in data set 'Reports'. Details: Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: The permissions granted to user 'DOMAIN\user.name' are insufficient for performing this operation.
at Microsoft.ReportingServices.Library.RSServiceDataProvider.CheckAccess...
where DOMAIN\user.name is my login mentioned above.
All other reports run fine when browsed for this way.
I've tried searching for this error, and despite there being dozens of 'solutions' proposed for this error message, none of them relate to this scenario.
Note that SSMS shows that DOMAIN\user.name is the owner of the ReportServer database.
Can anyone help, please?

Have you tried giving the DOMAIN\user.name the RSExecRole membership for the ReportServer database?
If you drill into the Security folder for your ReportServer database in SSMS and right-click on your DOMAIN\user.name and select Properties, you should see a Membership tab. That is where you will find the checkbox for RSExecRole.
Note: You will probably have to restart your SQL Server after making this change.

Related

SSRS 2017 Subscription can't be created or edited because the credentials used to run the report are not stored

I have an ssrs server that is not allowing me to create subscriptions for some reports. There are 20+ reports in a folder which all use the same data source: /Data Sources/MyDataSource. The credentials are stored in the data source. I can add subscriptions to most of the reports, but there are a few which throw the following error:
An Error Has Occurred:
Subscription can't be created or edited because
the credentials used to run the report are not stored, or if a linked
report, the link is no longer valid.
I have tried deleting the report and re-uploading them, deploying the whole bit from the project and adding another data source with the same stored credentials. However, I still get the same warning triangle on the subscription button. There are a batch of new reports I have added, some have this issue and others do not. Restarting the SSRS service did not help.
Any other ideas for troubleshooting this?
Bonkers! Looks like the issue was a case sensitivity one. In the project, all of the reports referred to a shared data source. However, sometimes the reference to the shared data source was spelled "mySharedDataSource" instead of "MySharedDataSource"
I found a hint of this in the logs, which complained about the first version of the spelling which did not exist on the report server. Fixing that and deploying the report corrected the issue and now I can create subscriptions.
Might be a 2017 thing, I have these reports both on a 2016 and 2019 instance and they have not complained.

SSIS: Unable to retrieve column information from the data source.

I know there is similar question, but it didn`t helped me.
When I execute a package data flow task fails with the error:
"Unable to retrieve column information from the data source. Make sure your target table in the database is available."
I refreshed the source component, the destination components also. The table do exist in database. I tried with setting some parameters like "Always Use Default Code Page" to true but didn`t helped.
Connections are also ok.
Any idea?
Sounds like a permissions issue. Try, running Visual Studio as administrator or if that doesn't work, make sure your Windows Account has access to the data you require in SQL Server.

What permissions are needed to load data in a shared dataset on SSRS 2016 Preview?

I've created a shared dataset in both BIDS and Report Builder. The data source is set up to use a windows service account. I've also tried it with a sql user that is verified to work.
In both BIDS and Report Builder, data is returned. When I go to the report portal and try to preview the data, or try to add it is a dataset to a mobile report, it throws an error:
I've given permissions at the root folder level to NT Authority\Authenticated Users and to my department's AD group, with all rights granted.
I'm not really sure what else to do, or where to even check to see what the error actually is. Any help is appreciated.
So I figured it out - it actually had nothing to do with permissions. A fiddler trace showed a 422 and 500 errors.
422: the Dataset could not be processed. The 500 said
500: There was a problem getting data from the Report Server Web Service: System.Web.Services.Protocols.SoapException: The JSON SharedDataSet Table renderer cannot parse the supplied report...
This lead me to check the actual query coming back, which had a Geography data type coming back for one of the fields. When I removed this from the query, everything worked fine.

ssis oledb source, as400 parameter not found

I'm using ssis 2008 and I'm trying to get data from an as400 database.
I have a Data Flow Task, and inside it, I have an Oledb Source and in there, I have Data access mode to Sql Command, and I have a query:
select *
from table1
where name = ?
Then i click on the Parameters button and set "name1" for the name of my parameter.
When i ran the ssis, i got error:
Error: The SQL command requires a parameter named ""00001"", which is
not found in the parameter mapping.
So I changed the parameter name to ""00001"" and the ssis worked fine.
Now, the problem is that this same ssis needed to be ran on another as400 server, and older one, and when it ran it showed error:
Error: The SQL command requires a parameter named "", which is
not found in the parameter mapping.
So, now the other server requires a different parameter name.
Is there another way of doing this process using something different than Oledb Source in order to avoid the problem?
What can I do?
We are using sql 2012 and a as400 system and we use a ODBC source for the as400. For our setup it seems to be working. So try the ODBC.
Well, this seems to be an as400 bug, as seen here : [link]http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/5d6ef4f9-1a67-45d1-8a49-eb08becf1408/
On that thread a user says: "This bug is directly related to IBMDA400 from IBM Client Access Tools. There is a bug with the driver passing a parameter to the AS/400. I have proved this out using a third party driver from HiT Software. Passing 00001 is correct using their drivers."
So as I see, it wont matter the method you use, what's need to be done in order to get it working is to pass the parameter with name that AS400 requires. If the parameter with the correct name is passed then the query will work correctly.

Local Load Testing: The load test results database could not be opened

I am creating some Load tests using VS2012. I can run the tests using a StorageType of "None", but when I change this to a StorageType of "Database" I get the dreaded error
The load test results database could not be opened. Check that the
load test results database specified by the connect string for your
test controller (or local machine) specifies a database that contains
the load test schema and that is currently available. For more
information, see the Visual Studio help topic 'About the Load Test
Results Store'. The connection error was: An error occurred while
attempting to create the load test results repository schema: To
create the database 'LoadTest2010' your user account must have the
either the SQL Server 'sysadmin' role or both the 'serveradmin' and
'dbcreator' roles
I have created a database on a non local copy of SQL called LoadTest. When I test the connection from the SQL Tracing Connect String dialog I get a success.
I have created a SQL user that has the Server Roles of dbcreator, public, serveradmin and sysadmin. The user has a User Mapping to the LoadTest2010 database that was created from the loadtestresultsrepository.sql in the VS2012 IDE directory. On the database the user has the Database role memberships db_accessadmin, db_datareader, db_datawriter, db_owner.
In the Owned Schemas i ticked on the db_datareader, db_datawriter, db_owner and db_securityadmin howver these have now gone to a blue square instead of a tick when displayed.
So what's going on? Is Visual studio trying to create the database or is something else the issue?
I am not using TestControllers or TestAgents I am simply using a local run.
The answer was simple. I was setting up the connection string in the "SQL Tracing Connect String" instead of clicking the little "Manage Test Controller" icon at the top of my load test window and setting up the connection string from there.
Now I'm off to remove some of those superfluous permissions I created on that SQL user :)
Edit:
The SQL Connection String is NOT stored in the loadtest files. The setting seems to be PC specific so I had to change it on the build server - in one loadtest file (address.loadtest) as shown, then all the other loadtests adopt the same connection string.
I am using Visual Studio 2013 and had this error as well, but for a different reason. It's not entirely clear when setting up a load test for the first time that it will attempt to save the results to a database by default. I didn't realize it was trying to save results to a database until I got the error on my first run attempt. Furthermore, in the load test wizard, there is no screen to configure the database settings or create the database schema for that matter.
I found this article on MSDN which helped me solve the problem.
How to: Create a Load Test Results Repository Using SQL
https://msdn.microsoft.com/en-us/library/ms182600%28v=vs.120%29.aspx?f=255&MSPPError=-2147217396
Basically, it explains that you first need to run a script to create the load test repository schema. Once this is in place on your SQL instance is (it could be anywhere you like), then you can point your load test to this database and save your results there.
For me after I had set database connections and all the test results was still not writing to the database.
I forgot to change my storage type in the properties section of the runsettings.
The property is called 'Storage Type'
Storage Type : change it from None to Database