Eu tenho um grande banco de dados SQL Server 2008 que possui muitas tabelas, procedimentos armazenados e funções. Este banco de dados também possui vários usuários.
Como posso fazer com que cada usuário, após conectar-se ao banco de dados via Management Studio, possa ver apenas seus objetos relacionados no navegador de objetos, MAS possa executar funções, procedimentos armazenados e selecionar tabelas pertencentes a outros usuários?
Parece que você precisa empregar alguns esquemas de banco de dados para separar os objetos do usuário:
http://msdn.microsoft.com/en-us/library/ms190387.aspx
Um esquema de banco de dados nada mais é do que uma coleção de objetos dentro de um banco de dados. DBO e SYS são esquemas integrados comuns no SQL Server. Você pode criar um esquema que abriga os objetos de um usuário (tabelas, funções, procedimentos armazenados...) e atribuir um nível de segurança a esse esquema (proprietário, leitor...). Isso ajuda especialmente em termos de administração em nível de objeto.
" Visibilidade de metadados " determina quais objetos um usuário pode ver. Basicamente, seus próprios objetos (login, usuários) ou o que eles têm permissões (tabelas, código etc).
Você não pode ocultar um objeto no qual eles tenham permissão de seleção/execução. Simples.
O que você pode fazer se usar esquemas para criar agrupamentos de objetos no SSMS para "organizar" a visão de John e Sarah. No entanto, este é um mau uso do esquema na minha opinião