Создать учетную запись для проверки подлинности сервера Sql? - PullRequest
2 голосов
/ 26 октября 2011

Я хочу создать учетную запись для проверки подлинности сервера Sql, а не пользователя в базе данных или в учетной записи.

Я имею в виду, что я хочу создать учетную запись, чтобы я мог войти в нее при запускеSQL Server, используя транзакцию SQL или C #.

1 Ответ

4 голосов
/ 26 октября 2011

Я знаю, что вы можете использовать только два режима: аутентификация Windows или SQL Server. Это означает, что вы ограничены только двумя вариантами: либо вы используете учетную запись Windows, либо создаете имя входа SQL Server, которое вы можете использовать для аутентификации.

EDIT:

Чтобы программно создать имя входа на сервер sql, вы можете использовать объекты Sql Server Management. Я заметил, что вы не сказали, хотите ли вы сделать это из Windows (настольного компьютера) или веб-приложения. Чтобы использовать Sql Server Management для создания имени входа (или любого другого типа «управления»), необходимо выполнить код с более высокими привилегиями, например, с локальной или доменной учетной записью с достаточными привилегиями для администрирования экземпляра SQL-сервера.

Вам нужно будет добавить ссылки (вы можете использовать версию 9.0 сборок):

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

При этом для создания логина SQL и добавления пользователя в целевую базу данных достаточно следующего кода

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

Вам нужно будет добавить:

using Microsoft.SqlServer.Management.Smo;

Вы можете добавить блоки try {} catch {} и программный код, чтобы сделать его более надежным, чтобы его можно было корректно восстановить в случае сбоя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...