Добавить логин и пользователя на SQL Server без использования SMO - PullRequest
3 голосов
/ 06 сентября 2010

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

В настоящее время мы используем SMO для этого, но это создает нам проблемы (x86 против x64, SQL Server 2005 против 2008 и т. Д.)

Есть ли способ добавить логин (на сервер) и пользователя (в каталог) с использованием SQL?

Это текущий код для добавления логина:

connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);

//Drop existing login (if exist)
Login login = server.Logins[AccountName];
if (login != null)
    login.Drop();

//Create new login
login = new Login(server, AccountName);
login.LoginType = LoginType.WindowsUser;

login.Create();
DatabaseMapping mapping = new DatabaseMapping(login.Name, connection.DatabaseName, login.Name);

и добавить пользователя:

connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);
Microsoft.SqlServer.Management.Smo.Database database = server.Databases[CatalogName];
User user = server.Databases[CatalogName].Users[LoginName];
if (user != null)
    user.Drop();

user = new User(database, LoginName);
user.Login = LoginName;
user.Create();
user.AddToRole("db_owner");

Я хочу выполнить эти операции с использованием SQL. Есть идеи?

1 Ответ

5 голосов
/ 06 сентября 2010

CREATE LOGIN и CREATE USER

Для проверки входа в систему сначала :

IF SUSER_ID('Login') IS NULL

Для проверки пользователя сначала

IF DATABASE_PRINCIPAL_ID('User') IS NULL

Чтобы добавить пользователя к роли :

EXEC sp_addrolemember 'Role', 'User'

К вашему сведению, SMO реплицирует функциональность SQL. Я не думаю, что есть что-то, что можно сделать только SMO (конечно, есть много только SQL).

...