patternsqlMinor
Giving server-role to login breaks stored procedures
Viewed 0 times
storedproceduresloginroleservergivingbreaks
Problem
I have a login called
Both of the above commands work.
Now if I give the
Could not find stored procedure 'TestSortation'.
I don't want to have to change every stored procedure in the database to have the schema name included with EXECute commands manually. Can someone explain to my why this is happening. Also, is there a way to get around this, automatically fix my stored procedures, have the schema default to
user1. user1 can execute stored procedure [Test].[SP1]EXEC [Test].[TestSortation]
EXEC [TestSortation]Both of the above commands work.
Now if I give the
user1 the server role of sysadmin in addition to public. the later of the 2 statements above fails, and throws this error:Could not find stored procedure 'TestSortation'.
I don't want to have to change every stored procedure in the database to have the schema name included with EXECute commands manually. Can someone explain to my why this is happening. Also, is there a way to get around this, automatically fix my stored procedures, have the schema default to
[Test]?Solution
Grant
As documented in Books Online:
The value of
One caveat: you would need to check for any code that depends on the user explicitly being a member of the
CONTROL SERVER to the login rather than adding it to the sysadmin role.As documented in Books Online:
The value of
DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. All members of the sysadmin fixed server role have a default schema of dbo.CONTROL SERVER gives the same rights as sysadmin but without this side-effect.One caveat: you would need to check for any code that depends on the user explicitly being a member of the
sysadmin role (for example, code using IS_SRVROLEMEMBER).Context
StackExchange Database Administrators Q#65145, answer score: 8
Revisions (0)
No revisions yet.