Connessione sql express

di il
5 risposte

Connessione sql express

Dopo un bel pò di tempo ho deciso di rinnovare(per così dire) l'ambiente di sviluppo passando da vs 2008 a vs 2015 professional e cambiare Database da "Access 2003" a sql express 2012 tutto in locale,Tutto a posto,installato sql,importato tabelle da access nel nuovo ambiente e nessun problema,provato la connessione con sql server management tutto ok.
Ora,la mia domanda è,visto che non sono molto ferrato in ambiente sql,vorrei mettere un password per connettermi a sql express con vs 2015,visto che ora con ssms basta connettersi con autenticazione di windows,con access non avevo problemi,creavo la password con il software ma con sql?ho cercato sul web e di indicazioni ve ne sono tante ma sinceramente ci ho capito poco;ho capito che i database devono stare nella cartella DATA di sql,in sostanza una volta installato sql,non voglio che l'utente possa connettersi a sql liberamente,deve connettersi tramite il software che richiederà la password,quale strada devo fare?non voglio pappa pronta ma solo indicazioni.
Grazie.

5 Risposte

  • Re: Connessione sql express

    Ciao

    Attento che su Sql Server hai due entità distinte:
    • login
    • utenti
    In pratica gli step teorici per accedere al database sono:
    • Ti connetti al motore di Sql Server (istanza)
    • Accedi con la tua login
    • In base alla login, qualcuno ha configurato quali database puoi vedere e che utente usare per ciascun database
    Il tuo problema riguarda quindi la parte di login, ovvero come si autenticano le persone sull'istanza di Sql Server.

    Su Sql hai due tipi di login:
    • Windows: essendoti già loggato su Windows, il sistema usa le stesse credenziali per autenticarsi
    • Sql: niente login automatica, devi dare il classico username/password sul database
    Quello che chiedi è di accedere col secondo metodo, quindi devi andare nella sezioni delle login ed attivare l'autenticazione di Sql. A quel punto, puoi creare tutte le login che vuoi


    Tieni presente che:
    • Va benissimo che la tua app utilizzi l'autenticazione "database". E' molto più comodo per iniziare
    • Se però vuoi dare l'accesso al database (anche in sola lettura) agli utenti, in quel caso forse torna più comoda l'autenticazione Windows
    • Di default il tuo utente windows è amministratore di Sql e si collega in automatico. In teoria, se qualcun altro con un utente diverso tenta di connettersi, dovrebbe dirgli che non può farlo, almeno finchè dalle "login" non gli dai i permessi
    • La versione Express di Sql Server di default lavora solo in locale (localhost). Per far accedere altri computer connessi alla rete, devi abilitarlo
  • Re: Connessione sql express

    Innanzitutto ti ringrazio per le indicazioni che mi hai fornito e credo di aver capito(più o meno),comunque,per il momento faccio le prove con il mio pc in locale ma quello che vorrei fare io(gli utenti avranno accesso a tutti i DB sia in lettura che scrittura senza possibilità di eliminare nulla)è avere l'accesso a sql con una password e basta.
    Tanto per capirsi,in access creavo una password criptata e poi avevo accesso tutte le tabelle che erano dento il DB.
    Questa la stringa per creare la password su access:
    
     NewPwd = passCriptata(NewPwd)
                connect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & DBase & ";Persist Security Info=False;Mode=12;JET OLEDB:Database Password="
                connect.Open()
                cmd.Connection = connect
                cmd.CommandText = "ALTER Database Password " & NewPwd & " NULL"
                cmd.ExecuteNonQuery()
                connect.Close()
    
    e così creavo la password sul DB;chiedo:è possibile fare la stessa cosa e connettersi solo a sql express senza creare utenti e permessi vari?tanto devono connettersi a tutti i DB che vi sono dentro(saranno 4 o 5) o devo creare obbligatoriamente creare un utente e dare la password e successivamente connettermi a sql senza autentificazione di windows?
    Scusa la mia ignoranza ma passare da access a sql mi rende completamente a digiuno,poi una volta capito il meccanismo
    non dovrei avere problemi.
    Grazie in anticipo.
  • Re: Connessione sql express

    Salve,
    senza pretesa di completezza, come gia' indicato da @PIGI78, SQL Server gestisce la sicurezza in diverse distinte 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; in caso di dominio, SQL Server si basa su quanto gestito/inviato dal DomainController...

    come sicuramente gia' sai, l'autenticazione integrata si basa sull'accreditamento di un account WinNT ovvero di un gruppo WinNT mappata su
    una login interna di SQL Server, individuale nel primo caso, di gruppo nel secondo... la procedura di sistema da utilizzare in tal senso e' appunto sp_grantlogin (o CREATE/ALTER LOGIN...), che per l'appunto mappa un account/gruppo WinNT su una login SQL Server autorizzata alla connesione.. di default, in questo ambito, SQL Server, al momento dell'installazione, provvede a garantire l'accesso a tutti gli amministratori locali creando la login di gruppo Builtin\Administrator, membri del ruolo del server sysadmin, che comunque e' eliminabile...
    quindi la cosa va attentamente amministrata... ed in questo caso devi consentire al tuo account Windows (amministratore o meno che esso sia) la possibilita' di autenticazione all'istanza...

    l'altra metodologia, 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, tramite la procedura sp_grantdbaccess (o CREATE USER...), che provvede 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...

    C'e' poi la terza macro-parte di sicurezza, relativa all'accesso ai singoli "oggetti", quindi tabelle/viste/stored procecdures etc...
    qui la logica di sicurezza volge a garantire "l'accesso" minimo alle funzionalita' desiderate per lo specifico "database user" (NON Login, ma user)... ci sono "ruoli" di database, vedi sopra, che hanno gia' un set specificato di privilegi in tal senso, ma con questa sezione puoi estendere/limitare (non sempre la seconda) l'accesso ad oggetti specifici.

    La quarta parte riguarda privilegi/limitazioni ancora piu' specifiche, a livello ad esempio di "colonna" di una specifica tabella, ma qui sorvoliamo

    ora, visto il quadro generale, molto spesso ho visto gestire l'accesso applicativo con sistemi "fatti in casa", quindi NON utilizzando il set messo a disposizione da SQL Server, ma gestendo tutto con tecniche di "raggiro" o comunque gestite con logica di business (non di soldi )...
    L'applicazione, al primo accesso, richiede un privilegio di connessione (Login) a livello di sysadmin (quindi richiede la pwd della login "sa" o altra login amministrativa), provvede a generare una "propria" Login SQL con pwd conosciuta a livello dell'applicazione, con privilegi almeno di CREATE DATABASE per poter gestire i "propri database" [ma molto spesso ho visto priviegli amministrativi "totali" ]... SE chi ha scritto l'applicativo e' lungimirante, crea anche una Login SQL "senza privilegi", da utilizzare come "utente interattivo" vero e proprio, cioe' quello che accedera' ai dati.
    Poi l'applicazione crea i propri database, crea il db_user "interattivo e limitato" in ogni suo db... a questo db_user vengono poi assegnati i privilegi necessari (spesso "troppi")... personalmente non apprezzo molto i privilegi db_datareader e db_datawriter in quanto preferisco permettere l'accesso ai dati solo tramite stored procedures o viste non aggiornabili, ma poi qui si entra in un'altra area di preferenze e flames...

    Quindi, tecnicamente, a parte la login amministrativa "personale" dell'applicazione, c'e' anche una "login interattiva" che, come db_user del db applicativo, accede al/ai db, e quindi agli oggetti e "fa cose"

    il db applicativo sicuramente conterra' una tabella "utenti", tabella "privilegi", ..., dove l'applicativo stesso gestira' a livello applicativo la granularita' dei privilegi applicativi... ma tutto questo e' business oriented e NON SQL Server oriented

    in ogni caso, suggerisco di utilizzare Login amministrative SOLO nei casi necessari, quindi per creare db etc... non per le standard operazioni CRUD...

    salutoni romagnoli
    --
    Andrea
  • Re: Connessione sql express

    Leggendo il post di "asql" mi sono accorto di una cosa che forse stai sottovalutando: stai migrando da un "piccolo database" (Access) ad uno dei DBMS più completi (Sql Server)

    Pertanto è probabile che il 99% di quello che facevi con Access puoi rifarlo con Sql Server.

    Devi però tener presente anche l'aspetto opposto: Sql è più completo e, pertanto, gestisce diverse cose in modo più dettagliato (vedi la sicurezza).
    In questi casi, più che replicare quanto stavi facendo con Access, ti consiglio di studiare un po' come lavora Sql Server e capire quale sia la soluzione migliore al tuo scopo.

    Se devi passare da Access a Sql per poi replicare quello che facevi prima, tanto vale rimanere su Access.
    Se invece decidi di passare a Sql, sfruttane la potenza (e la sicurezza)
  • Re: Connessione sql express

    Salve @PIGI78,

    [OT]

    PiGi78 ha scritto:


    ... stai migrando da un "piccolo database" (Access) ad uno dei DBMS più completi (Sql Server)

    ecco, su questo punto, potremmo ricevere "insulti" dalle comunita' DBMS, che spesso ritengono SQL Server un giocattolo... io, ovviamente, non sono tra questi, ma sicuramente non possiamo fare confronti che siano "a noi favorevoli" con ad esempio Oracle
    ma... vabbeh...

    [/OT]

    salutoni romagnoli, e buon ferragosto SQL oriented
    --
    Andrea
Devi accedere o registrarti per scrivere nel forum
5 risposte