Как я могу сопоставить логин с базой данных, используя T-SQL (не SSMS)

12

Я пишу программу, которая требует от меня назначить все разрешения и все в коде. Я застрял в этой части:

введите описание изображения здесь

Я просто хочу сделать то же самое, что щелкнуть маленькое поле под «Карта» для базы данных msdb и назначить этого пользователя на роль SqlAgentUser. Мне нужен пользователь, чтобы иметь возможность добавлять / редактировать задания агента SQL Server. Я могу правильно настроить параметры с помощью SSMS, но не могу понять, как это сделать в сыром SQL.

Я посмотрел в ALTER LOGIN, но я не вижу ничего, что делает то, что мне нужно. Я подозреваю, что просто не знаю правильных терминов для Google. Я обычно не делаю такого рода вещи.

Любая помощь высоко ценится!

eddie_cat
источник
3
Вы можете «сгенерировать сценарий», который, я думаю, поможет вам в будущих проектах. В верхней части экрана.
Racer SQL
1
@RafaelPiccinelli О, черт возьми, это так полезно! Я даже не заметил этого там! Спасибо!
eddie_cat
Я действительно плохо разбираюсь в кодах, это мне очень помогает.
Racer SQL

Ответы:

18
USE msdb;
GO
CREATE USER shims FROM LOGIN shims;
GO
ALTER ROLE SqlAgentUserRole ADD MEMBER shims;
GO

Кроме того, для дальнейшего использования в любое время, когда вы знаете, как сделать что-то в пользовательском интерфейсе, но не в скрипте, это то, для чего предназначен Scriptпараметр в большинстве диалогов - он покажет вам, какой скрипт SSMS должен был выполнить:

введите описание изображения здесь

Аарон Бертран
источник
3

Если вы хотите изменить текущую базу данных \ default на другую, попробуйте:

alter login <loginname> with default_database = <dbname>;

Теперь создайте пользователя для созданного выше логина.

 use <dbname>;
 create user <username> from login <loginname>;

И теперь вы можете назначить роли вышеупомянутому пользователю создания для входа в систему, как показано ниже:

use <dbname>
exec sp_addrolemember 'db_owner', '<username>';
KASQLDBA
источник
3
Из документов :This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER ROLE instead.
Аарон Бертран
Так должен ли я менять базу данных по умолчанию каждый раз, когда я хочу что-то сделать с этим пользователем в msdb? В окне выше кажется, что вы можете иметь более одной базы данных, связанной с пользователем одновременно ... это неправильно?
eddie_cat
@eddie_cat Нет, я не вижу причин в этом случае менять базу данных по умолчанию, если только вы не хотите, чтобы этот пользователь всегда подключался к определенной базе данных по умолчанию.
Аарон Бертран
Создать пользователя для входа в систему; правильный синтаксис выглядит следующим образом: ------------------------------------------- ------------------------------ ИСПОЛЬЗОВАТЬ [DatabaseName] GO СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ [UserName] ДЛЯ ВХОДА [LoginName] GO
Kundan Dasange