SQL71501 Adding a Role Membership in SSDT VS2013 - visual-studio-2013

I am trying to add a role membership with my SSDT database project.
EXECUTE sp_addrolemember #rolename = N'<RoleName>', #membername = N'<Domain>\svc.data'
I get the following error:
SQL71501: Role Membership: <unnamed> has an unresolved reference to object [<Domain>\svc.data]
The user and logins are defined and if I switch the code to another user ie:
EXECUTE sp_addrolemember #rolename = N'<RoleName>', #membername = N'<Domain>\svc.data2'
It works perfectly.
I have reimported the schema from the live database (the live database works fine) and I get the same error.

I just found out what you can try. But make sure you have latest SSDT power tools installed:
1) Create a folder like Security
2) Right-click, then Add -> New Item
3) Under SQL Server -> Security
There is a Server Role type file and Server Role Membership.
Let me know if that helps.
I used that to create the Database Role, moved out the scripts out of the post-deploy and it all worked well. I was also granting the permissions in the same file, just had to use GO separator after each line.

Related

How to remove SSRS credentials in Visual Studio 2008

I have a question similar to this one, but I am using VS 2008 and an Oracle database (with Oracle SQL Developer). How do I get rid of the report credentials in VS? Thank you.
One of the easiest ways to get rid of this is to supply a username and password for the database in question on the reporting server. The URL is usually something like http://localhost/reports. Usually, users created for this type of connection have minimal read-only rights needed for the specific report. The disadvantages to this type of connection is that it's a one-user-fits-all situation. But because of the error message you are getting, it appears that your wish is to supply a specific user name and password rather than use Windows security--which is just fine.
To get here, click Security from the report drop-down list on the main page. Then, click the Credentials stored securely on the report server. Then, here's an issue that get's lots of folks--click the Apply button at the bottom to save the changes. Sometimes the Apply button is not visible and you need to scroll down to click it.
Now, if you're accessing your report through ReportViewer in VS then the following link may provide some help:
http://www.sql-server-performance.com/2012/accessing-ssrs-reports-report-viewer-web-page/
Alternately, you can create or add to a web.config file:
https://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.ireportservercredentials.aspx
p.s. based on our chat, try adding the following to your web.config connection string--if you have one(with the respective user name and password)--if, indeed you're using Oracle's ODP.net:
providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password
http://www.oracle.com/technetwork/topics/dotnet/downloads/odpnet-managed-nuget-121021-2405792.txt
I have not figure out how to solve this from the database. What I did was, comment out this line of code from the XML of the report:
<Prompt>Specify a user name and password for data source XXX</Prompt>
If you have the correct credential info in the <value> tag, your report should be loaded with username and password parameters without problems.

why permissions section for Database user is empty in MS Sql server 2008R2

NOTE: I am note DB Admin and I am not that much in sql server security
I am using MS SQL SERVER 2008R2
What I want to do is to give a user a minimal permissions or just what he required
I have a local user in my windows and I add this user in the logins of the database after that I went to this user in my specific database and try to change his set of permissions but the section is coming empty
why it is coming empty?
and how to do this, I mean giving him the permissions that he just need nothing more?
Please I want to do this from the user interface without T-sql
EDIT
I Just want to give the user read, write, execute nothing more
and also I need to know more about how to control users permissions in more details
A. Set up Read/Write
Go to Security/Logins and find your login, double click it
Go to user mapping, and click on the database that you have access to
In the bottom pane under 'Database Role Membership', tick db_datareader and db_datawriter
This gives the user Login SELECT, INSERT, UPDATE, DELETE
B. Revoke DELETE and grant EXECUTE
Create a role that does this:
Go to your database / Security / Roles
Right click, New / Database Role
Give the role a name, I will use executor for this example and press OK
I don't know how to do the next steps in SSMS, You'll need to do it in T-SQL:
Start a new query in your database
Type this and press F5:
GRANT EXECUTE TO executor;
DENY DELETE TO executor;
Now repeat A3 but select your newly created role, 'executor'
Every new user (or group) that you create needs to be a member of these three roles. The best practice is to add a windows group to SQL Server once, and add users to that windows group.
Lastly test this - I don't know for sure that it works.
With regards to the database user securables:
You have to explicitly populate this list to see what it contains. It doesn't populate automatically. Press Search and search for some objects (i.e. all objects belonging to the schema dbo). Now you have a list of objects in the top. Click on an object and click the 'Effecttive' tab on the bottom. This is the users effective (final) permissions for this object. If you want to override this at the object level you can assign something on the explicit tab
Had similar problem after our MSSQL Server was restored on a new server and wanted to set explicit permissions for a user in a DB.
Not sure how to make it default (as it appears to have been previously), but basically just hit the search button in the Securables tab you show to search for "All objects of the types..." and choose the Databases object and click ok / search. You should now see securables for that specific database and can set explicit permissions as well as view existing "effective" permissions.

Magento: Upgrade script is run before core installation is complete

I'm working on automating the deployment of a Magento (1.7.0.2 community) shop. In order to do that, I have a Git repository with the complete codebase, including all installed modules.
I run the command-line based installer (install.php) on deployment, against an empty database. But apparently the SQL update scripts of the modules are being run before the installer fully completes, which causes a problem:
There is a (custom) script that creates a new (adminhtml) user role, and it seems that this role is created before Magento's own Administrators role. That wouldn't be bad, but the initial admin user is created as being part of our custom role - not the Administrators! (I suspect the Installer simply uses something like parent_id = 1 when creating the user, with 1 normally being the Administrators group, but in this case it's our custom one.)
So, my question is: How do I either keep the upgrade script from being executed while the installer is running (and have it run on the first page load instead), or tell the installer to run this upgrade script only after the initial user and roles setup is complete? Or do you see a completely different solution?
In case that's useful: This is what our upgrade script basically does:
<?php
$roleData = array(
'role_name' => 'My_Shiny_Role',
'role_type' => 'G',
);
$role = Mage::getModel('admin/role')->setData($roleData)->save();
$resources[0] = '__root__';
Mage::getModel("admin/rules")
->setRoleId($role->getId())
->setResources($resources)
->saveRel();
(It's not encapsulated in a class, simply plain PHP.)
There's probably a "Magento Way" to disable the database update function from executing, but you could do it in SQL via:
UPDATE
core_resource
SET
version = CONCAT('9.', version),
data_version = CONCAT('9.', data_version);
and then reenable it with:
UPDATE
core_resource
SET
version = SUBSTR(version, 3),
data_version = SUBSTR(data_version, 3);

Cannot create an ADO.NET entity data model through wizard

I have an issue and I cannot find out what the problem is. In visual studio 2010 I'm trying to add a new ADO.NET entity data model through the wizard (I'm using Entity Framework 4.1). After the second wizard step (that says "Choose your Data Connection") I press next and the wizard is closed right away, and there are no following steps at all. Here is my entity connection string:
metadata=res://*/DAL.Model1.csdl|res://*/DAL.Model1.ssdl|res://*/DAL.Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=DMITRIY-TOSH\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True"
Is there anything wrong with that connection string? What should I change in it and how? Or what else can be the cause of the problem? Help me with this, please. I don't even know how to make it work to see the next wizard step where I can choose tables.
Found the solution. The folder "App_Data" (with the database inside) wasn't included into the project. Only because of that the wizard did not work.
I had this problem too, all the above didn't work for me. What helped for me was the following.
When you try to connect with a database that database can have different users with different credentials it can accept. Let's say user A till D.
If you try to connect with a user make sure that user has the right credentials enabled, in this case, read and write options enabled.
To do this start MS SQL Server Managment Studio, connected with your SQL server and select the database you try to make a connection with in visual studio. Under 'your_dbname' --> Security --> Users you find a list of users. Rightclick the username you try to login with and select properties. A window opens. Select the 'General' (selected by default) page and under tab 'Database role membership' make sure 'db_datareader' and 'db_datawrite' are selected.
Note: When you log in too MS SQL Server Managment Studio make sure you log in with a user which can enable/disable these options...
I created an empty model, then selected it in 'Model browser', right clicked on it and selected 'Update model from database'. Then I was able to add a table to it...

How to solve this error: The permissions granted to user 'COMPUTERNAME\\ASPNET' are insufficient for performing this operation. (rsAccessDenied)

I am trying to integrate the SSRS report to my web page.
The code is as follows:
ReportViewer1.ProcessingMode = rocessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/reportserver");
ReportViewer1.ServerReport.ReportPath = "/Report Project1/Reconciliation";
List<ReportParameter> paramList = new List<ReportParameter>();
paramList.Add(new ReportParameter("StartDate", startdate.ToString(), false));
paramList.Add(new ReportParameter("EndDate", enddate.ToString(), false));
this.ReportViewer1.ServerReport.SetParameters(paramList);
ReportViewer1.Visible = true;
I get this error when I try to run this report:
The permissions granted to user 'COMPUTERNAME\\ASPNET' are insufficient for performing this operation. (rsAccessDenied)"}
System.Exception {Microsoft.Reporting.WebForms.ReportServerException}
Can anyone tell me what I am doing wrong?
To clarify Erikk's answer a little bit.
The particular set of security permissions you want to set to fix this error (there are at least another two types of security settings in Reports Manager) are available in the "security" menu option of the "Properties" tab of the reports folder you are looking at.
Obiously it goes without saying you should not give full permission to the "Everyone" group for the Home folder as this is inherited to all other items and subfolders and open a huge security hole.
You need to give your web app access to your reports. Go to your report manager (http://servername/reports/). I usually just give the whole web server "Browser" rights to the reports.
The account name of your server is usually Domain\servername$. So if you server name is "webserver01" and your domain is Acme, you would give the account Acme\servername$ Browser rights.
I think you could also fix it by disabling anonymous access (in IIS) on the web application you are running the report from, that way reporting services would authenticate using the users credentials instead of the ASPNET account. But that may not be a viable solution for you.
The problem is that your ASP.NET worker process does not have the permissions to do what you want.
Edit this user on the server (MACHINENAME\ASPNET), and give it more permissions (It may need write permissions etc).
You also will need to add MACHINENAME\ASPNET as a user to the SQL database SSRS is working with.

Resources