Creazione dell'utente per un singolo database contenuto


9

Sono abbastanza nuovo a lavorare con MSSQL e al momento ho la versione 2012. Quello che sto cercando di fare è creare un utente per un database contenuto e dare a quell'utente l'accesso solo a quel database.

Richiamerò questo SQL da JAVA usando una dichiarazione preparata.

Risposte:


12

Per creare un utente contenuto in SQL Server 2012 che esegue l'autenticazione nel database, è possibile effettuare le seguenti operazioni:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Dovrai prima assicurarti che contained database authenticationsia abilitato sull'istanza e che il database sia impostato con un contenimento parziale:

exec sp_configure 'contained database authentication', 1
go
reconfigure
go

alter database YourDatabase
set containment = partial
go

Una volta eseguiti i comandi precedenti, dovresti essere in grado di creare il tuo utente contenuto con l' CREATE USERistruzione come spiegato sopra.

EDIT : grande commento e punti di @AaronBertrand:

Inoltre, la stringa di connessione deve assolutamente utilizzare il nome del database come parte delle credenziali: se non si specifica il database, SQL Server non controllerà tutti i database e tenterà di capire quale si intende. E il tuo codice non può eseguire query tra database nel caso in cui tale limitazione non sia chiara.


Grazie per tutto l'aiuto, una cosa di cui commentare è, mentre stavo cercando di farlo con le dichiarazioni JDBC Java. Non sono stato in grado di farlo con l'utilizzo di PreparedStaments, JDBC non era contento di questo. così ho usato una stringa concatenata come un'istruzione.
imellan,
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.