Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar conta de autenticação do Sql Server?


Existem apenas dois modos que eu sei que você pode usar:Autenticação do Windows ou SQL Server. Isso significa que você está limitado a apenas duas opções:você usa uma conta do Windows ou cria um logon do SQL Server que pode ser usado para autenticar.

EDITAR:

Para criar programaticamente um logon do sql server, você pode usar objetos do Sql Server Management. Percebi que você não disse se deseja fazer isso em um aplicativo do Windows (desktop) ou da Web. Para usar o Sql Server Management para criar um login (ou fazer qualquer tipo de "gerenciamento"), o código precisaria ser executado com privilégios mais altos - digamos, uma conta local ou de domínio com privilégios suficientes para administrar a instância do SQL Server.

Você precisará adicionar referências a (você pode usar a versão 9.0 dos assemblies):
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlEnum

Com isso, o código a seguir é suficiente para criar um login SQL e também adicionar o usuário ao seu banco de dados de destino
        var serverName = "."; // Your SQL Server Instance name
        var databaseName = "Test"; // Your database name
        var loginName = "testuserY"; // Your login name (should not exist - or you should add code to check if the login exists)


        Server svr = new Server(serverName);
        var db = svr.Databases[databaseName];
        if (db != null)
        {
            // You probably want to create a login and add as a user to your database
            Login login = new Login(svr, loginName);
            login.DefaultDatabase = "master"; // Logins typically have master as default database
            login.LoginType = LoginType.SqlLogin;
            login.Create("foobar", LoginCreateOptions.None); // Enter a suitable password
            login.Enable();

            User user = new User(db, loginName);
            user.UserType = UserType.SqlLogin;
            user.Login = login.Name;
            user.Create();
            // add a role
            user.AddToRole("db_owner");
        }

Você precisará adicionar:
using Microsoft.SqlServer.Management.Smo;

Você pode adicionar blocos try{} catch{} e código de encanamento para torná-lo mais robusto, você recuperaria normalmente em caso de falha