sql >> Base de Datos >  >> RDS >> Sqlserver

¿Crear cuenta de autenticación de servidor Sql?

Solo hay dos modos que sé que puede usar:autenticación de Windows o SQL Server. Esto significa que está limitado a solo dos opciones:usa una cuenta de Windows o crea un inicio de sesión de SQL Server que puede usar para autenticarse.

EDITAR:

Para crear mediante programación un inicio de sesión del servidor sql, puede usar objetos de administración del servidor Sql. Noté que no dijo si desea hacer esto desde una aplicación de Windows (escritorio) o Web. Para usar Sql Server Management para crear un inicio de sesión (o realizar cualquier tipo de "administración"), el código debe ejecutarse con mayores privilegios, por ejemplo, una cuenta local o de dominio con suficientes privilegios para administrar la instancia del servidor SQL.

Deberá agregar referencias a (podría usar la versión 9.0 de los ensamblajes):

Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlEnum

Con eso, el siguiente código es suficiente para crear un inicio de sesión de SQL y también agregar el usuario a su base de datos 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");
        }

Deberá agregar:

using Microsoft.SqlServer.Management.Smo;

Puede agregar bloques try{} catch{} y código de plomería para hacerlo más sólido y recuperarlo con gracia en caso de falla