66

Ogni SQL Server stringa di connessione che io abbia mai visto simile a questa:Qual è il punto di "Catalogo iniziale" in una stringa di connessione di SQL Server?

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database; 
    Integrated Security=SSPI; 

mi serve l'impostazione Initial Catalog? (Apparentemente no, dal momento che l'app su cui sto lavorando sembra funzionare senza.)

Bene, allora, a cosa serve?

+24

Hmmm, ho appena scoperto che la mia app ha messo tutti i miei tavoli creati in master. Ops. Forse ho appena imparato la risposta alla mia domanda. –

risposta

38

Se l'utente che è la stringa di connessione ha accesso a più di un database, è necessario specificare il database a cui si desidera connettere la stringa di connessione. Se il tuo utente ha solo un database disponibile, hai ragione che non ha importanza. Ma è una buona pratica metterlo nella stringa di connessione.

+7

Non del tutto vero. Il login potrebbe non avere permessi sul database predefinito. Quindi, è necessario modificare il contesto del database sulla connessione – gbn

+0

Questo è richiesto per Entity Framework se si specifica utilizzando il parametro -ConnectionStringName, quindi sicuramente buona pratica ma anche a volte richiesto! –

29

Questo è il initial database dell'origine dati quando si effettua la connessione.

cura per chiarezza:

Se si dispone di più database in l'istanza di SQL Server e non si desidera utilizzare il database predefinito, è necessario un modo per specificare quale si intende utilizzare.

+1

La prima parte è corretta. La seconda parte non è corretta. Quando si crea l'account, viene assegnato un database predefinito che verrà utilizzato se il catalogo iniziale non è specificato. Generalmente questo è il valore predefinito (per qualche motivo sconosciuto). – GrayWizardx

+0

Quando dico "per impostazione predefinita" intendo semplicemente quando non si qualifica il database nei nomi degli oggetti. In ogni caso, ho chiarito la mia risposta. –

8

L'impostazione di un catalogo iniziale consente di impostare il database che le query eseguite su tale connessione utilizzeranno per impostazione predefinita. Se non si imposta questa connessione per un server in cui sono presenti più database, in molti casi verrà richiesto di avere un'istruzione USE in ogni query per dichiarare esplicitamente il database su cui si sta tentando di eseguire la query. L'impostazione del catalogo iniziale è un buon modo per dichiarare esplicitamente un database predefinito.

Problemi correlati