Programa do servidor SQL para criar um novo utilizador

quero escrever um programa para criar um utilizador {[[0]} (com abcd Senha ) no SQL Server Express. Também quero atribuir a este utilizador {[[0]} todos os direitos.

Author: Md. Suman Kabir, 2009-10-21

5 answers

Com base na tua pergunta, acho que podes estar um pouco confuso sobre a diferença entre um utilizador e um Login . A Login é uma conta no servidor SQL como um todo-alguém que é capaz de entrar no servidor e que tem uma senha. A User is a Login with access to a specific database.

Criar um Login é fácil e deve (obviamente) ser feito antes de criar uma conta de utilizador para o login numa conta específica base de Dados:

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

Aqui está a forma como cria um utilizador com privilégios de DB_ proprietário usando a autenticação acabou de declarar:

Use YourDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO

Agora, As Loginas são um pouco mais fluidas do que eu as faço parecer acima. Por exemplo, uma conta de Login é criada automaticamente (na maioria das instalações do servidor SQL) para a conta do administrador do Windows quando a base de dados está instalada. Na maioria das situações, eu só uso isso quando estou administrando um banco de dados (ele tem todos os privilégios).

No entanto, se você vai estar acessando o servidor SQL de uma aplicação, então você vai querer configurar o servidor para "Modo Misto" (tanto janelas e logins SQL) e criar um Login como mostrado acima. Você vai então "conceder" privilégios para esse Login SQL com base no que é necessário para o seu aplicativo. Veja aqui para mais informações.

Actualização: o Aaron indica a utilização do sp_addsrvrolemember para atribuir um papel preparado à sua conta de autenticação. Esta é uma boa idéia-mais rápido e mais fácil do que conceder privilégios manualmente. Se você pesquisar no google, verá muitos links. No entanto, você ainda deve entender a distinção entre um login e um usuário.

 143
Author: Mark Brittingham, 2012-07-02 14:51:05

Direitos de administração completos para todo o servidor, ou uma base de dados específica? Acho que os outros responderam por uma base de dados, mas para o servidor:

USE [master];
GO
CREATE LOGIN MyNewAdminUser 
    WITH PASSWORD    = N'abcd',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember 
    @loginame = N'MyNewAdminUser', 
    @rolename = N'sysadmin';

Poderá ter de deixar de fora os parâmetros de CHECK_ dependendo da versão do servidor SQL que está a usar (é quase sempre útil para incluir esta informação na sua pergunta).

 24
Author: Aaron Bertrand, 2009-10-21 14:48:00

Se quiser criar um programa Genérico, poderá fazê-lo com uma instrução executar com uma substituição pelo seu nome de utilizador e nome de base de dados

Declare @userName as varchar(50); 
Declare @defaultDataBaseName as varchar(50);
Declare @LoginCreationScript as varchar(max);
Declare @UserCreationScript as varchar(max);
Declare @TempUserCreationScript as varchar(max);
set @defaultDataBaseName = 'data1';
set @userName = 'domain\userName';
set @LoginCreationScript ='CREATE LOGIN [{userName}]
FROM WINDOWS 
WITH DEFAULT_DATABASE ={dataBaseName}'

set @UserCreationScript ='
USE {dataBaseName}
CREATE User [{userName}] for LOGIN [{userName}];
EXEC sp_addrolemember ''db_datareader'', ''{userName}'';
EXEC sp_addrolemember ''db_datawriter'', ''{userName}'';
Grant Execute on Schema :: dbo TO [{userName}];'
/*Login creation*/
set @LoginCreationScript=Replace(Replace(@LoginCreationScript, '{userName}', @userName), '{dataBaseName}', @defaultDataBaseName)
set @UserCreationScript =Replace(@UserCreationScript, '{userName}', @userName)
Execute(@LoginCreationScript)

/*User creation and role assignment*/
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', @defaultDataBaseName)
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db2')
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db3')
Execute(@TempUserCreationScript)
 5
Author: Guish, 2015-05-28 16:21:32

Pode usar:

CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO 

Para criar o utilizador (Veja aqui para mais detalhes).

Então poderá ter de utilizar:

CREATE USER user_name 

Para criar o utilizador associado ao login para a base de dados específica que deseja conceder-lhes acesso também.

(VerAqui para mais detalhes)

Também pode utilizar:

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name

Para configurar as permissões para o esquema a que atribuiu os utilizadores.

(VerAqui para mais detalhes)

Mais dois os comandos que poderá achar úteis são alterar o utilizador e alterar o utilizador .

 3
Author: Simon P Stevens, 2017-10-18 09:49:49
Na semana passada, instalei a Microsoft SQL Server 2014 Developer Edition na minha dev box e encontrei imediatamente um problema que nunca tinha visto antes.

Instalei várias versões do servidor SQL inúmeras vezes, e normalmente é um procedimento indolor. Instale o servidor, execute a consola de gestão, é assim tão simples. No entanto, depois de completar esta instalação, quando eu tentei entrar no servidor usando SSMS, eu recebi um erro como o abaixo:

Autenticação do servidor de SQL erro 18456 "A autenticação falhou para o utilizador... (Microsoft SQL Server, erro: 18456)" Estou acostumado a ver este erro se digitar a senha errada ao entrar – mas isso só se eu estiver usando o modo misto (Windows e autenticação SQL). Neste caso, o servidor foi configurado apenas com autenticação Windows, e a conta de usuário era minha. Eu ainda não tenho certeza por que ele não adicionou o meu usuário para o papel SYSADMIN durante a configuração; talvez eu perdi um passo e esqueci-me de adicioná-lo. De qualquer forma, nem toda a esperança era perdido.

A forma de corrigir isto, se não conseguir ligar - se a nenhuma outra conta ao servidor SQL, é adicionar a sua ligação de rede através de uma interface de linha de comandos. Para isso funcionar, você precisa ser um administrador no Windows para o PC em que você está conectado.

Parem o serviço MSSQL. Abre uma linha de comandos com a opção Executar como administrador. Mudar para a pasta que contém o ficheiro EXE do servidor SQL; o valor por omissão para o servidor SQL 2014 é "C:\Program ficheiros\Microsoft SQL Servidor\MSSQL12.MSSQLSERVER\MSSQL\Binn". Execute o seguinte comando: "sqlservr.exe-m". Isto irá iniciar o servidor SQL no modo de utilizador único. Ao deixar esta linha de comandos aberta, abra outra, repetindo os passos 2 e 3. Na janela da linha de comandos do segundo comando, Executar "sqlcmd-S Server_Name\Instance_Name" Nesta janela, execute as seguintes linhas, carregando em Enter após cada uma: 1

Criar a autenticação [nome do domínio\nome do registo] das janelas 2 Vá 3 SP_ADDSRVROLEMEMBER "LOGIN_NAME", "SYSADMIN" 4 Vá Use o CTRL+C para terminar ambos os processos na linha de comandos do Windows; ser-lhe-á pedido para carregar em Y para terminar o processo do servidor de SQL.

Reiniciar o serviço MSSQL. É isso! Você deve agora ser capaz de fazer login usando o seu login de rede.

 0
Author: Mohammad shahnawaz, 2017-10-03 11:53:34