Exceptions using SMO to Grant/Deny/Revoke permissions on Schema for Contained DB User

  • Thread starter Thread starter MJB222398
  • Start date Start date
M

MJB222398

Guest
I am getting exceptions thrown when trying to set certain permissions for a given user (they are a contained DB user) on a a given schema. Below is an excerpt of my code, the lines commented out are the ones I have had problems with so far. So the issues seem to be for the following permissions:

1. CONNECT

2. IMPERSONATE

3. SEND

4. RECEIVE

The exceptions I get are like the following when the GRANT for CONNECT is done (some nested inner exceptions), these are the three messages from these:

Grant failed for Schema 'dbint_45'.

An exception occurred while executing a Transact-SQL statement or batch.

Incorrect syntax near 'CONNECT'.

I cannot find any extra information than this, why is this happening? Is there a way I can debug to get more information? Can I get the actual SQL statement that is being executed?

var revokedPerms = new ObjectPermissionSet();
var deniedPerms = new ObjectPermissionSet();
var grantedPerms = new ObjectPermissionSet();

//revokedPerms.Add(ObjectPermission.Connect);

if (isNewUser)
{
//Set permissions on schema to allow access to Views for this client only

grantedPerms.Add(ObjectPermission.Select);

deniedPerms.Add(ObjectPermission.Alter);
deniedPerms.Add(ObjectPermission.CreateSequence);
deniedPerms.Add(ObjectPermission.Delete);
//deniedPerms.Add(ObjectPermission.Impersonate);
deniedPerms.Add(ObjectPermission.Insert);
//deniedPerms.Add(ObjectPermission.Receive);
deniedPerms.Add(ObjectPermission.References);
//deniedPerms.Add(ObjectPermission.Send);
deniedPerms.Add(ObjectPermission.TakeOwnership);
deniedPerms.Add(ObjectPermission.Update);
deniedPerms.Add(ObjectPermission.ViewChangeTracking);
}

//Disable access to DB if this feature is disabled for the client
if (isEnabled)
{
//grantedPerms.Add(ObjectPermission.Connect);
}
else
{
//deniedPerms.Add(ObjectPermission.Connect);
}

//Apply these permissions
if (!revokedPerms.Equals(new ObjectPermissionSet()))
schema.Revoke(revokedPerms, userName, false, false);

if (!deniedPerms.Equals(new ObjectPermissionSet()))
schema.Deny(deniedPerms, userName, false);

if (!grantedPerms.Equals(new ObjectPermissionSet()))
schema.Grant(grantedPerms, userName, false);

schema.Alter();

Continue reading...
 
Back
Top