Come posso mappare un accesso a un database usando T-SQL (non SSMS)


12

Sto scrivendo un programma che mi richiede di assegnare tutte le autorizzazioni e tutto il codice. Mi sono bloccato in questa parte:

inserisci qui la descrizione dell'immagine

Voglio solo fare l'equivalente di fare clic sulla piccola casella in "Mappa" per il database msdb e assegnare tale utente al ruolo SqlAgentUser. Ho bisogno di un utente per poter aggiungere / modificare i lavori di SQL Server Agent. Posso ottenere le impostazioni giuste usando SSMS ma non riesco a capire come farlo in SQL raw.

Ho esaminato ALTER LOGIN ma non vedo nulla che faccia ciò di cui ho bisogno. Sospetto di non conoscere i termini corretti per Google. Normalmente non faccio questo genere di cose.

Ogni aiuto è molto apprezzato!


3
Puoi "generare script" che penso ti aiuteranno in progetti futuri. Nella parte superiore dello schermo.
Racer SQL,

1
@RafaelPiccinelli oh mio dio che è così utile! Non l'ho mai notato lassù! Grazie!
eddie_cat,

Sono davvero pessimo nei codici, questo mi aiuta MOLTO.
Racer SQL,

Risposte:


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

Inoltre, per riferimento futuro, ogni volta che sai come fare qualcosa nell'interfaccia utente ma non in uno script, questo è ciò che serve per la Scriptmaggior parte delle finestre di dialogo: ti mostrerà quale script SSMS avrebbe eseguito:

inserisci qui la descrizione dell'immagine


3

Se si desidera modificare il database corrente \ predefinito con uno diverso, provare:

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

Ora, crea un utente per il login sopra creato

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

E ora puoi assegnare ruoli all'utente sopra creato per l'accesso come di seguito:

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

3
Dai documenti :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

Quindi dovrei cambiare il database predefinito ogni volta che voglio fare qualcosa con questo utente in msdb? Nella finestra sopra sembra che tu possa avere più di un database associato a un utente alla volta ... è sbagliato?
eddie_cat,

@eddie_cat No, in questo caso non vedo alcun motivo per modificare il database predefinito, a meno che tu non voglia che quell'utente si connetta sempre a un determinato database per impostazione predefinita.
Aaron Bertrand

Per creare l'utente per l'accesso; la sintassi corretta è la seguente: ------------------------------------------- ------------------------------ UTILIZZARE [DatabaseName] GO CREATE USER [UserName] FOR LOGIN [LoginName] GO
Kundan Dasange
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.