Добавить логин и пользователя в SQL Server без использования SMO

в продукте нашей компании мы прикрепляем базу данных к 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. Любые идеи?


person Nissim    schedule 06.09.2010    source источник
comment
К вашему сведению, если вы можете сделать что-то в Smo, но не в SQL, вы всегда можете использовать Profiler для отслеживания SQL, отправленного на сервер, во время выполнения вашего кода Smo. Обычно этого достаточно, чтобы указать вам правильное направление.   -  person Pondlife    schedule 06.09.2010
comment
Вау, спасибо. Никогда не знал об этом... +1 за отличный совет   -  person Nissim    schedule 07.09.2010


Ответы (1)


СОЗДАТЬ ВХОД и СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ

Чтобы проверить сначала войдите в систему:

IF SUSER_ID('Login') IS NULL

Чтобы сначала проверить пользователя

IF DATABASE_PRINCIPAL_ID('User') IS NULL

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

EXEC sp_addrolemember 'Role', 'User'

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

person gbn    schedule 06.09.2010