Bom dia, Eduardo!
Você vai ter que criar um login só com role padrão (Public) depois criar um usuário no banco que você quer que ele tenha acesso, negando as permissões de escrita e leitura e em seguida garantir acesso somente
à(s) tabela(s) que você quer que ele acesso:
USE [master]
GO
CREATE
LOGIN [fulano]
WITH
PASSWORD=N'xJWRGxKu0lrhQqjx1uX46VNr+ws5bnxsXKt9wV0jeD8='
Go
Use Teste
Go
CREATE
USER [fulano] FOR
LOGIN [fulano] WITH
DEFAULT_SCHEMA=[dbo]
ALTER
ROLE [db_denydatareader]
ADD MEMBER [fulano]
ALTER
ROLE [db_denydatawriter]
ADD MEMBER [fulano]
USE [Teste]
GO
ALTER
ROLE [db_denydatareader]
ADD MEMBER [fulano]
ALTER
ROLE [db_denydatawriter]
ADD MEMBER [fulano]
GRANT
DELETE ON [dbo].[t_Teste]
TO [fulano]
GRANT
INSERT ON [dbo].[t_Teste]
TO [fulano]
GRANT
SELECT ON [dbo].[t_Teste]
TO [fulano]
GRANT
UPDATE ON [dbo].[t_Teste]
TO [fulano]
Quanto à impedir que ele veja outros bancos, no final das contas, você vai ser obrigado a dar acesso completo ao banco para o usuário em questão
(db_owner).
PS: Tive que reescrever a resposta, fui alterar algo e acabei excluindo.
att,
Mailson Santana - DBA
MCSE: Data Management and Analytics
Site: www.mailsonsantana.com.br
Linkedin: mailsonsantana