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


12

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

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

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

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

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


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>';

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.