Solved

permissions to hit sysobjects

Posted on 2010-09-09
14
609 Views
Last Modified: 2012-05-10
what permissions does a user need to be able to select sysobjects?

thanks
0
Comment
Question by:anushahanna
  • 6
  • 4
  • 2
  • +2
14 Comments
 
LVL 11

Accepted Solution

by:
aelliso3 earned 300 total points
ID: 33639696
the just need SELECT permissions:
 
GRANT SELECT ON sys.sysobjects to anushahanna,
0
 
LVL 6

Author Comment

by:anushahanna
ID: 33639740
he does't hit it, still. can you see why?
create proc test as select 1
create login testlogin with password =  'password1!'
create user testuser FOR LOGIN testlogin
grant select on sysobjects to testuser
execute as user = 'testuser'
select * from sysobjects where type = 'P' and name = 'test'
revert
drop user testuser
drop login testlogin
drop proc test

Open in new window

0
 
LVL 5

Assisted Solution

by:tvPrasad
tvPrasad earned 100 total points
ID: 33639742
account with sysadmin permissions
0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 
LVL 11

Expert Comment

by:aelliso3
ID: 33639917
It's working great on mine ... Are you using a seperate session to execute the sproc?
create proc test as select 1
create login testlogin with password =  'password1!'
create user testuser FOR LOGIN testlogin
grant select on sysobjects to testuser
execute as user = 'testuser'
select * from sysobjects where type = 'P' and name = 'test'
revert
drop user testuser
drop login testlogin
drop proc test
GO 

EXEC test

Open in new window

0
 
LVL 6

Author Comment

by:anushahanna
ID: 33640028
aelliso3, i still could not make it happen. can you execute it without the 'EXEC test' line- that is not needed for this test, right?

I changed you code with lots of GOs to make it sure that it will err out... can you try this:
----------------------------
create proc test as select 1;
GO
create login testlogin with password =  'password1!';
GO
create user testuser FOR LOGIN testlogin;
GO
grant select on sysobjects to testuser;
GO
execute as user = 'testuser';
GO
select * from sysobjects where type = 'P' and name = 'test';
GO
select system_user;
GO
revert;
GO
select system_user;
GO
drop user testuser;
GO
drop login testlogin;
GO
drop proc test;
0
 
LVL 6

Author Comment

by:anushahanna
ID: 33640057
tvPrasad, other than sysadmin, any other lower level roles?
0
 
LVL 142

Assisted Solution

by:Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3] earned 100 total points
ID: 33640226
actually, to READ ( SELECT) sysobject/sys.objects, you need no rights, because public role has read permissions to it implicitly, and any login mapped to the database (aka user) has public role implicitly.this is anyhow required, otherwise the user would not be able to "see" which objects he has actually permissions to and which not ...
0
 
LVL 5

Expert Comment

by:tvPrasad
ID: 33640243
you can try

GRANT SELECT, EXECUTE ON sys.sysobjects TO anushahanna
0
 
LVL 6

Author Comment

by:anushahanna
ID: 33640444
angelIII, tvPrasad - that does not seem to be sufficient..

please run the code in # 33640028 above.
0
 
LVL 11

Assisted Solution

by:aelliso3
aelliso3 earned 300 total points
ID: 33641290
Try this ...

CREATE LOGIN testlogin WITH PASSWORD='password1!'
ALTER LOGIN testlogin ENABLE
GO

create user testuser FOR LOGIN testlogin;
GO

CREATE PROC test AS SELECT 1
GO
GRANT EXECUTE ON master.dbo.test TO testuser
GRANT VIEW DEFINITION ON master.dbo.test TO testuser

GO

--GRANT select on sysobjects to testuser;
GO
EXECUTE AS user = 'testuser';
SELECT * FROM sysobjects WHERE TYPE = 'P' AND NAME = 'test';
SELECT system_user;
GO 
REVERT
GO
drop user testuser;
GO
drop login testlogin;
GO
drop proc test;
GO

Open in new window

0
 
LVL 11

Assisted Solution

by:aelliso3
aelliso3 earned 300 total points
ID: 33641349
I wanted to take a second and go through and eliminate what was not needed in the script above. Below is a little cleaner version ...
CREATE LOGIN testlogin WITH PASSWORD='password1!'
CREATE USER testuser FOR LOGIN testlogin
GO

CREATE PROC test AS SELECT 1
GO

GRANT EXECUTE ON master.dbo.test TO testuser

EXECUTE AS user = 'testuser'
SELECT * FROM sysobjects WHERE TYPE = 'P' AND NAME = 'test'
SELECT system_user
GO 

REVERT
DROP USER testuser
DROP LOGIN testlogin
DROP PROC test
GO

Open in new window

0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 33642807
Just for the record, are you still using SQL Server 2000, because all the solutions so far seem to assume you are using SQL Server 2005.
0
 
LVL 6

Author Comment

by:anushahanna
ID: 33646980
aelliso3, i see your point. thanks.
0
 
LVL 6

Author Comment

by:anushahanna
ID: 33646982
acperkins, this pertained to SQL 2005, and helped. thank you.
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
query execution hang 5 29
Refresh Dev server with Production database 8 28
Webservices in T-SQL 3 31
string fuctions 4 26
This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question