Accesso non riuscito per utente"nomeutente" ServerSql

di il
21 risposte

Accesso non riuscito per utente"nomeutente" ServerSql

Buongiorno

Ho un problema che non riesco a risolvere in nessuna maniera,anche perché e la prima volta che armeggio con SSMS vi spiego meglio:
a. ho creato un database con SSMS creando un account di accesso. SSMS è installato sul mio pc
b. poi ho sviluppato con Visual studio 12, un'applicazione in visual basic che fa riferimento al database creato, con relativa stringa di connessione, che invierà in una determinata tabella del db alcuni dati.
c. effettuo il debug dell'applicazione e funziona il tutto perfettamente.
d. una volta pubblicata l'applicazione ed installata in un altro pc, la stessa si blocca dicendomi "l' accesso non riuscito per l'utente "nomeutente"

cosa sbaglio?ho provato più volte ad cambiare utente ma nulla mi da sempre il solito errore. considerate la mia forte ignoranza su SSMS e relativi server

21 Risposte

  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Non hai dato le informazioni importanti.

    Qual è l'esatto messaggio d'errore?
    Dove è installato SQL Server?
    Quale tipo di utente hai creato per accedere al DB?
    Come accede l'altro PC a quello in cui è installato il SQL Server?
    Qual è la stringa di connessione utilizata?
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Grazie per la tua attenzione
    rispondo subito alle tue domande:
    SQL Server è installato sul mio pc ( sto effettuando una prova per capire bene) non ho mai avuto bisogno di appoggiare dati su un server, ho sviluppato piccole app che hanno lavorato solo in locale.
    utente db_owner e public
    accede tramite stessa rete wifi
    Private DBCon As New SqlConnection("Server=DESKTOP-PDKDUI3;Database=EmployeesDB;User=RosyConnessione;Pwd=O********;")
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Il messaggio esatto dell'errore?
    L'utente utilizzato è di Windows o di SQL server?
    Quale versione di SQL Server? E' installato in modalità mixed mode o no?
    Il DESKTOP-PDKDUI3 è visibile in rete dal PC dove c'è il programma?
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Buongiorno
    Il messaggio di errore e quello del titolo della discussione solo che nome utente nell'errore c'è RosyConnessione.
    La versione è Microsoft SQL Server 2017 (64 bit)
    Autenticazione di Sql Server e di Windows attivo
    si il pc è visibile anche perché quando il pc DESKTOP-PDKDUI3 e spento da un altro tipo di messaggio che il server non è raggiungibile.
    grazie ancora.
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Se è un utente di Windows nella stringa di connessione ci va anche

    Trusted_Connection=True;

    Se riesci dicci anche il valore di Stare restituito nell'errore
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Riccardo1968 ha scritto:


    Autenticazione di Sql Server e di Windows attivo
    Ok che l'autenticazione di SQL Server è attiva, ma hai provveduto a creare il login con cui stai cercando di collegarti?
    E ancora, hai provveduto ad associarlo al database di tuo interesse mappandolo con un ruolo (es. db owner)?
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Quando ha accennato a
    utente db_owner e public
    ho pensato avesse fatto tutto ... ma mi stanno venendo dei dubbi
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Salve
    Scusatemi le domande stupide:
    ma non basta con SSMS creare un Account di accesso e un utente con la relativa mappatura delle tabelle del DB?
    Bisogna fare un Login e in che modo?
    E in infine, ma se ci sono tutti questi problemi( che molto probabilmente ci saranno), quando lancio il debug in visual studio non dovrebbe bloccarsi nella stessa maniera dell'app pubblicata?
    grazie ancora
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Riccardo1968 ha scritto:


    quando lancio il debug in visual studio non dovrebbe bloccarsi nella stessa maniera dell'app pubblicata?
    Dipende dal problema. Se nella tua macchina in locale funziona, mentre da un'altra macchina non riesci a collegarti, probabilmente non hai abilitato la possibilità di instaurare una connessione in rete, oppure l'applicazione sta usando una stringa di connessione che non è quella che pensi.

    Se non riporti il dettaglio dell'errore che segue il messaggio principale, ossia quello che ti dice "Accesso negato...", non lo scopriremo mai.

    Analogamente, senza avere dettagli sulla configurazione o sulla struttura del tuo applicativo, la modalità di connessione, il recupero della stringa, che sia anche un banalissimo pezzo di codice, è impossibile risalire all'origine del problema.
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Salve a tutti,
    1)
    forse per chiarire un attimino, direi che l'architettura di sicurezza di SQL Server si distingue principalmente in due fasi..
    la prima fase riguarda l'autenticazione, cioe' la possibilita' di connessione all'istanza stessa.. questa avviene con 2 metodologie completamente separate, cioe' con autenticazioni "trusted", dove il sid dell'account di logon a Windows viene valutato/accettato da SQL Server stesso quale login riconosciuta, ovvero tramite autenticazione standard, che richiede la provvista di credenziali di autenticazione, tipicamente userid e password ...

    la seconda macro-parte di sicurezza e' invece, relativa agli accessi alle singole basi dati, per la quale, ogni login che non faccia parte del ruolo del server sysadmin, necessita di esplicita autorizzazione (escludiamo le particolarita' dell'utente di database Guest in quanto e' mia abitudine rimuoverlo) per l'accesso ad ognuno di essi, (CREATE USER [ https://docs.microsoft.com/it-it/sql/t-sql/statements/create-user-transact-sql?view=sql-server-ver15 ] - ALTER USER [ https://docs.microsoft.com/it-it/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-ver15 ]) dove si puo'/deve provvedere appunto a mappare gli utenti di database alle relative login di istanza..
    all'interno di ogni database esistono dei ruoli standard di database, ai quali e' possibile aggiungerne di personali, anche al fine di avere oculate politiche di assegnazione di privilegi... esiste anche chiaramente un "utente" particolare, dbo, che in fin dei conti e' il proprietario della base dati e puo' per definizione operare in qualisiasi ambito al suo interno... e questo non e' modificabile, fa parte dell'architettura di sicurezza di SQL Server...

    non esistono quindi password a livello di database o cose similari

    2)
    ... quando lancio il debug in visual studio non dovrebbe bloccarsi nella stessa maniera dell'app pubblicata?
    ...
    Private DBCon As New SqlConnection("Server=DESKTOP-PDKDUI3;Database=EmployeesDB;User=RosyConnessione;Pwd=O********;")
    per connessioni locali, se non diversamente inpostato relativamente al protocollo di connessione, viente utilizzato il protocollo "Shared Memory", che non e' ovviamente disponibile per connessioni remote, dove solitamente si utilizza (e si imposta a livello di stringa di connessione) il protocollo desiderato, ad esempio TCP/IP o Named Pipes a seconda di come si sia impostata a livello di servizio con SQL Server Configuration Manager, dove appunto puoi/devi impostare i protocolli utilizzabili per l'istanza in esame, specificando ad esempio per TCP/IP l'utilizzo di una porta specifica ovvero di utilizzare il servizio SQL Browser, dove tale listener e' in ascolto sulla porta UDP 1434 al fine di risolvere le chiamatedi connessioni impostate per l'istanza con l'utilizzo di TCP Dynamic Port (dove quindi la porta di ascolto dell'istanza viene assegnata automaticamente dal OS al momento dello start up del servizio [che di solito corrisponde all'ultima porta utilizzata se non occupata, valore che viene salvato nel registry) e reindirizzare automagicamente le connessioni in entrata ed uscita verso tale porta dinamica, in maniera trasparente agli utenti.
    anche i firewall locali andrebbero impostati per permettere il traffico in questo senso...

    va quindi tendenzialmente valuto "come" si vuole concedere la possibiilita' di connessione, e questo per la parte fisica a livello di protocollo di rete...
    va poi valutata ed impostata la parte amministrativa di sicurezza inerente l'istanza SQL Server relativamente a "come" si desidera concedere l'autenticazione (principal noto come LOGIN)...
    dopo cio', va poi valutata ed impostata la parte amministrativa di sicurezza inerente il singolo e specifico database per concedere privilegi di accesso allo stesso (principal noto come database USER) ed ovviamente tutti i privilegi a livello di ruolo (database role) di cui un db user puo' essere mentro, come anche privilegi addizionali garantiti/negati specificatamente allo stesso db user...
    la cosa quindi puo' essere semplice e lineare come anche complicata ed arzigogolata quanto lo si desidera... e non abbiamo qui affrontato le problematiche di granularita' ancora piu' fine ad esempio relativamente all'accesso a specifiche colonne a livello di colonna di specifica tabella o vista...

    per rispondere quindi alla domanda iniziale, "Accesso non riuscito per utente"nomeutente" ServerSql", si puo' cominciare investigando anche in https://docs.microsoft.com/it-it/sql/relational-databases/errors-events/mssqlserver-18456-database-engine-error?view=sql-server-ver15

    saluti
    --
    Andrea
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Riccardo1968 ha scritto:


    Buongiorno
    .....
    d. una volta pubblicata l'applicazione ed installata in un altro pc, la stessa si blocca dicendomi "l' accesso non riuscito per l'utente "nomeutente"
    ciao,

    ma il server sql che ti dà problemi sta sull'altro pc ?
    se si, come hai 'portato' il db sull'altro pc?
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    No il server e nello stesso computer dove creo l'app
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Ma l'applicazione viene spostata su un ALTRO pc e da questo si collega al PC "server".

    Hai usato Trusted_Connection=True; nella stringa di connessione come ti avevo suggerito? Cosa succede?

    Qual è il valore di State restituito dall'errore?
  • Re: Accesso non riuscito per utente"nomeutente" ServerSql

    Sto effettuando tutte le prove ho inserito Trusted_Connection= true ma non cambia nulla
    e devo vedere il valore dello State purtroppo ho dei problemi al lavoro e sto dedicando poco tempo alla programmazione il prima possibile vi faccio sapere grazie mille
Devi accedere o registrarti per scrivere nel forum
21 risposte