Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer un compte d'authentification SQL Server ?

Je sais que vous ne pouvez utiliser que deux modes :l'authentification Windows ou SQL Server. Cela signifie que vous êtes limité à deux choix :soit vous utilisez un compte Windows, soit vous créez une connexion SQL Server que vous pouvez utiliser pour vous authentifier.

MODIFIER :

Pour créer par programme une connexion au serveur sql, vous pouvez utiliser des objets de gestion de serveur SQL. Je remarque que vous n'avez pas dit si vous voulez le faire à partir d'une application Windows (bureau) ou Web. Pour utiliser Sql Server Management pour créer une connexion (ou effectuer toute sorte de "gestion"), le code doit s'exécuter avec des privilèges plus élevés - par exemple un compte local ou de domaine avec des privilèges suffisants pour administrer l'instance du serveur SQL.

Vous devrez ajouter des références à (vous pouvez utiliser la version 9.0 des assemblys) :

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

Avec cela, le code suivant suffit pour créer une connexion SQL et également ajouter l'utilisateur à votre base de données cible

        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");
        }

Vous devrez ajouter :

using Microsoft.SqlServer.Management.Smo;

Vous pouvez ajouter des blocs try{} catch{} et du code de plomberie pour le rendre plus robuste, vous récupérerez gracieusement en cas d'échec