Sql-server – Only allow ability to read the views for a particular SQL Server user over ODBC

odbcpermissionssql serversql-server-2008

Newbie question: I have a designer who reads information from a SQL Server [2008] database. I've setup a few views for him to pull his data from and granted his user a member of the db_dataread role. His program uses an ODBC connection to grab the data.

However, this allows him read access to all of the tables and system views and tables, requiring unnecessary searching and confusion for the user.

Is there a way to restrict what he can see to only the handful of views I've created for him?

[EDIT: I've created a new test user, and a new test ODBC connection, giving no permissions at all with no change in results. From what I've read, it is because all users are part of the PUBLIC server role. The public role appears to give SELECT privilege to all system objects. Anyone know otherwise?]

Best Answer

Remove the user from the db_datareader role and just give it SELECT rights against the views you created for it. You don't mention which version of SQL Server, but the start point is invariably opening the user's properties screen and looking for something that says Permissions.