Создать учетную запись аутентификации Sql Server?

#c# #sql-server-2008

#c# #sql-server-2008

Вопрос:

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

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

Ответ №1:

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

Редактировать:

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

Вам нужно будет добавить ссылки на (вы можете использовать версию сборок 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{} и программный код, чтобы сделать его более надежным, чтобы вы могли корректно восстанавливаться в случае сбоя

Комментарии:

1. Хорошо, как создать логин SQL Server с помощью транзакции sql или с помощью C #?

2. В Sql Server 2008 R2 я мог пропустить вызов для входа в систему. Включить (): похоже, объект входа включается при создании.