Як я можу відобразити вхід у базу даних за допомогою T-SQL (не SSMS)


12

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

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

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

Я заглянув у ВНІШНІЙ ВХОД, але не бачу нічого, що робить те, що мені потрібно. Я підозрюю, що я просто не знаю правильних умов 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

Якщо ви хочете змінити поточну \ за замовчуванням базу даних на іншу, спробуйте:

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 Ні, я не бачу причини в цьому випадку змінювати базу даних за замовчуванням, якщо ви не хочете, щоб цей користувач завжди підключався до певної бази даних за замовчуванням.
— Аарон Бертран

Створити користувача для входу; правильний синтаксис такий: ------------------------------------------- ------------------------------ ВИКОРИСТОВУЙТЕ [
— Ім'я
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.