SQL: nome sem um nome de login

1

Tenho notado que, quando abro o gerenciador de empresa do SQL server e navego para a lista de usuários em um banco de dados específico, localizei usuários com "Nome", mas alguns não têm o valor "Nome de Login". O que isso significa? Isso significa que o

1) os usuários não podem efetuar login no servidor?

2) é um ID do sistema (ou ID do aplicativo para que nenhum usuário possa usá-lo para fazer logon e apenas aplicativos possam usá-lo para acessar o banco de dados?)

3) há um único sinal ligado assim que uma vez que o usuário entrar no servidor, eles podem acessar o banco de dados sem autenticação novamente?

Minha segunda pergunta pertence aos usuários do grupo "Segurança" no gerenciador da empresa. Quando dizemos que "a" está aqui e "a" também está presente nos usuários do banco de dados, isso significa que "a" pode acessar e alterar dados no banco de dados certo? Mas se "b" estiver no grupo de segurança, mas não nos usuários do banco de dados, isso significa que ele não pode fazer o login no banco de dados, mas apenas fazer alterações apenas no servidor?

Minha terceira pergunta: Se o banco de dados padrão é mestre, isso significa que esse usuário pode fazer alterações em todo o banco de dados?

Um enorme obrigado a todos que responderem às minhas perguntas!

    
por Laughy 11.12.2013 / 07:13

1 resposta

0

Banco de dados logins e usuários do banco de dados são diferentes . Basicamente, um login é concedido permissões do servidor, um usuário recebe permissões para o banco de dados. Logins são mapeados para bancos de dados.

Meu palpite é que você tem usuários em um banco de dados que não são mapeados para logins é que você restaurou um banco de dados de outro SQL Server e não copiou os logins. Existem basicamente duas maneiras de consertar usuários órfãos . Você pode usar sp_change_users_login ou pode copiar os logons entre os servidores para que a correspondência do sid.

Se você quiser usar um método de logon único, poderá fazer isso integrando-se ao Active Directory criando um login do Windows ao invés de usar um login sql.

Sim, você pode mapear um login para mais de um banco de dados. Você pode GRANT acessar diferentes objetos para cada banco de dados para o usuário ou adicionar o usuário a uma função de banco de dados. Há também funções de todo o servidor que dão acesso a um banco de dados, um bom exemplo disso é a função sysadmin. Definir um banco de dados padrão para o login não dá a esse login nenhuma permissão no banco de dados. Você verá que, por padrão, um login está no grupo público e isso proporciona acesso de nível muito baixo ao master & tempdb.

Você precisa conceder explicitamente acesso para um login no banco de dados. Você faz isso com sp_adduser . Se você criar os usuários no Enterprise Manager, então sim, o nome de login corresponderá ao nome do usuário, mas não é necessário, o sproc permite que você defina um nome de usuário diferente.
Este exemplo de código demonstra a diferença:

SELECT USER  --database user
SELECT SYSTEM_USER  --login

Eu não sei sobre o DB2, mas a Oracle não tem o conceito de login e usuário.

    
por 12.12.2013 / 02:11