Solved

permissions to hit sysobjects

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

thanks
0
Comment
Question by:anushahanna
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
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 143

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

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

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

Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Via a live example, show how to shrink a transaction log file down to a reasonable size.

695 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