Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Authentifizierungskonto erstellen?

Es gibt nur zwei Modi, von denen ich weiß, dass Sie sie verwenden können:Windows- oder SQL Server-Authentifizierung. Das bedeutet, dass Sie auf nur zwei Möglichkeiten beschränkt sind:Sie verwenden entweder ein Windows-Konto oder Sie erstellen eine SQL Server-Anmeldung, mit der Sie sich authentifizieren können.

BEARBEITEN:

Um programmgesteuert eine SQL Server-Anmeldung zu erstellen, können Sie Sql Server Management-Objekte verwenden. Mir ist aufgefallen, dass Sie nicht gesagt haben, ob Sie dies von einer Windows- (Desktop-) oder einer Webanwendung aus tun möchten. Um Sql Server Management zum Erstellen eines Logins zu verwenden (oder irgendeine Art von „Verwaltung“), müsste der Code mit höheren Rechten ausgeführt werden – sagen wir lokales oder Domänenkonto mit ausreichenden Rechten, um die SQL Server-Instanz zu verwalten.

Sie müssen Verweise hinzufügen auf (Sie könnten Version 9.0 der Assemblys verwenden):

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

Damit reicht der folgende Code aus, um ein SQL-Login zu erstellen und den Benutzer auch zu Ihrer Zieldatenbank hinzuzufügen

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

Sie müssen hinzufügen:

using Microsoft.SqlServer.Management.Smo;

Sie können try{} catch{}-Blöcke und Installationscode hinzufügen, um es robuster zu machen, damit Sie es im Falle eines Fehlers problemlos wiederherstellen können