#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 я мог пропустить вызов для входа в систему. Включить (): похоже, объект входа включается при создании.