Jak zmapować login do bazy danych przy użyciu T-SQL (nie SSMS)


12

Piszę program, który wymaga ode mnie przypisania wszystkich uprawnień i wszystkiego w kodzie. Utknąłem w tej części:

wprowadź opis zdjęcia tutaj

Chcę po prostu zrobić odpowiednik kliknięcia małego pola pod „Mapą” dla bazy danych msdb i przypisania tego użytkownika do roli SqlAgentUser. Potrzebuję użytkownika, aby móc dodawać / edytować zadania agenta programu SQL Server. Mogę poprawnie skonfigurować ustawienia za pomocą SSMS, ale przez całe życie nie mogę wymyślić, jak to zrobić w surowym języku SQL.

Zajrzałem do ALTER LOGIN, ale nie widzę nic, co robi to, czego potrzebuję. Podejrzewam, że po prostu nie znam poprawnych warunków dla Google. Zwykle nie robię takich rzeczy.

Każda pomoc jest mile widziana!


3
Możesz „wygenerować skrypt”, który moim zdaniem pomoże ci w przyszłych projektach. U góry ekranu.
Racer SQL

1
@RafaelPiccinelli o mój boże, to jest bardzo pomocne! Nigdy nawet tego nie zauważyłem! Dziękuję Ci!
eddie_cat

Jestem naprawdę kiepski w kodowaniu, to bardzo mi pomaga.
Racer SQL

Odpowiedzi:


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

Ponadto, do wykorzystania w przyszłości, za każdym razem, gdy wiesz, jak zrobić coś w interfejsie użytkownika, ale nie w skrypcie, taka jest Scriptopcja w większości okien dialogowych - pokaże, jaki skrypt wykonałby SSMS:

wprowadź opis zdjęcia tutaj


3

Jeśli chcesz zmienić bieżącą \ domyślną bazę danych na inną, spróbuj:

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

Teraz utwórz użytkownika dla powyższego loginu utworzonego

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

A teraz możesz przypisać role do powyższego utwórz użytkownika do logowania, jak poniżej:

use <dbname>
exec sp_addrolemember 'db_owner', '<username>';

3
Z dokumentów :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.
Aaron Bertrand

Czy powinienem zmieniać domyślną bazę danych za każdym razem, gdy chcę coś zrobić z tym użytkownikiem w msdb? W powyższym oknie wydaje się, że możesz mieć jednocześnie więcej niż jedną bazę danych skojarzoną z użytkownikiem ... czy to źle?
eddie_cat

@eddie_cat Nie, w tym przypadku nie widzę powodu, aby zmienić domyślną bazę danych, chyba że chcesz, aby użytkownik zawsze domyślnie łączył się z określoną bazą danych.
Aaron Bertrand

Aby utworzyć użytkownika do logowania; poprawna składnia jest następująca: ------------------------------------------- ------------------------------ UŻYJ [Nazwa bazy danych] GO UTWÓRZ UŻYTKOWNIKA [Nazwa użytkownika] DO ZALOGOWANIA [Nazwa logowania] GO
Kundan Dasange
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.