Preciso verificar se já existe um logon específico no SQL Server e, se não existir, preciso adicioná-lo.
Encontrei o código a seguir para realmente adicionar o logon ao banco de dados, mas quero agrupá-lo em uma instrução SE (de alguma forma) para verificar se o logon existe primeiro.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Entendo que preciso interrogar um banco de dados do sistema, mas não sei por onde começar!
sql-server
login
Brett Rigby
fonte
fonte
Respostas:
A partir daqui
fonte
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Pardon minha ignorância, eu gostaria de saber ...QUOTENAME()
circula@loginName
, não toda a declaração, e então você pode se livrar dos delimitadores manuais e manuais@loginName
.Aqui está uma maneira de fazer isso no SQL Server 2005 e versões posteriores sem usar a exibição syslogins descontinuada:
A visualização server_principals é usada em vez de sql_logins porque o último não lista os logins do Windows.
Se você precisar verificar a existência de um usuário em um banco de dados específico antes de criá-los, poderá fazer o seguinte:
fonte
Como uma adição menor a esse segmento, em geral você deseja evitar o uso dos modos de exibição que começam com sys.sys *, pois a Microsoft os inclui apenas para compatibilidade com versões anteriores. Para o seu código, você provavelmente deve usar sys.server_principals. Isso pressupõe que você esteja usando o SQL 2005 ou superior.
fonte
Você pode usar a função interna:
através da
gostar:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
fonte
Tente isto (substitua 'user' pelo nome de login real):
fonte
Isso funciona no SQL Server 2000.
no SQL 2005, altere a segunda linha para
Não tenho certeza sobre o SQL 2008, mas acho que será o mesmo que o SQL 2005 e, se não, isso deve lhe dar uma idéia de onde começar a procurar.
fonte
o que você exatamente deseja verificar para logon ou usuário? um login é criado no nível do servidor e um usuário é criado no nível do banco de dados para que um login seja exclusivo no servidor
Além disso, um usuário é criado contra um logon, um usuário sem logon é um usuário órfão e não é útil, pois você não pode executar o logon do servidor sql sem um logon
talvez você precise disso
verifique o login
a consulta acima retornará 'X' se o login existir, senão retornará nulo
então crie um login
isso cria um logon no servidor sql. mas aceita apenas senhas fortes
crie um usuário em cada banco de dados que você deseja fazer login como
atribuir direitos de execução ao usuário
É necessário ter permissões SYSADMIN ou dizer 'sa' para abreviar
você pode escrever um procedimento sql para isso em um banco de dados
fonte
Para lidar com conflitos de nomenclatura entre logins, funções, usuários etc., verifique a
type
coluna de acordo com a documentação do Microsoft sys.database_principalsPara lidar com chacters especiais em nomes de usuário, etc, use
N'<name>'
e de[<name>]
acordo.Criar login
Criar usuário do banco de dados
Criar função de banco de dados
Adicionar usuário à função
Conceder direitos ao papel
fonte
Isso é para SQL do Azure:
Fonte: Como verificar se o usuário do banco de dados já existe no Banco de Dados SQL do Azure
fonte
Primeiro, você deve verificar a existência do login usando a exibição syslogins:
Então você deve verificar a existência do seu banco de dados:
fonte