Ho seguito questo tutorial su ASP.Net MVC Core all'indirizzo: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/working-with-sql . E sono in grado di utilizzare le migrazioni di dotnet per creare il database contro il localDb con questa stringa di connessione nel file appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-MvcMovie-3005e0f3-42f4-4163-94cc-f794a05e8b91;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Ora voglio indicarlo a SQL Server Express per vedere se posso lavorare da lì e SSMS.
Quindi ora lo uso nel file appsettings.json:
{
"ConnectionStrings": {
"SqlExpressConnection": "Server=.\\SQLEXPRESS;Database=MvcMovieDb1;Integrated Security=True;MultipleActiveResultSets=true"
}
E in StartUp.ConfigureServices (), cambia:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
a
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("SqlExpressConnection")));
Quindi, nel prompt dei comandi, esegui:
aggiornamento del database dotnet ef
Ma ora ottengo: "Autorizzazione CREATE DATABASE negata nel database" master ".
Come posso dare a ef il permesso di creare il database? Esiste un parametro login / password che può essere utilizzato da dotnet ef se creo un login con CREATE Permessi?
Beh, sembra che non disponga di autorizzazioni DB come pensavo.
Ho appena fatto un test per aggiungere un db all'interno di SSMS e non ho il privilegio di CREATE "CREATE DATABASE Autorizzazione negata nel database" master ".
Sono in SSMS sotto il mio account di accesso amministratore del computer. E avvio SSMS usando l'autenticazione di Windows. Quindi il nodo di connessione superiore è simile a: FullComputerName \ SQLExpress (SQL Server 11.0.6020 - CompanyDomainName \ Samuel).
L'autenticazione di autenticazione di Windows è nel formato: CompanyDomainName \ Samuel. Non vedo il mio account CompanyDomainName \ Samuel sotto Computer Manager - Users. Non sono sicuro di come sia possibile accedere al computer con questo account. Come posso aggiungere questo account come login in Login di sicurezza?
L'account Windows locale CompanyDomainName\Samuel
è l'amministratore SQLExpress. Significa che sei amministratore di SQLExpress quando sei connesso a Windows.
Integrated security=true
viene utilizzato per connettersi a SQL Server con l'account Windows, ma non funziona perché IIS (o Kestrel o qualsiasi server Web) utilizzerà un account utente Windows diverso.
Hai due opzioni:
aggiungi l'account utente di Windows del tuo server web in Security/Logins
e verifica l' Windows authentication
oppure creare un nuovo accesso con l' SQL Server authentication
e aggiornare la stringa di connessione per utilizzarla
"Server=.\\SQLEXPRESS;Database=MvcMovieDb1;User Id=dbUserName;Password=thePassword"
(nota: se scegli questa ultima soluzione, dovresti essere consapevole dei potenziali problemi di sicurezza se memorizzi la password nel codice sorgente. Leggi questa pagina per maggiori informazioni )