66

Chaque chaîne de connexion SQL Server je vois jamais ressemble à ceci:Quel est le point de "catalogue initial" dans une chaîne de connexion SQL Server?

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

Ai-je besoin le réglage du catalogue initial? (Apparemment non, puisque l'application sur laquelle je travaille semble fonctionner sans elle.)

Eh bien, alors, à quoi ça sert?

+24

Hmmm, je viens de découvrir que mon application met toutes mes tables créées en master. Oops. J'ai peut-être appris la réponse à ma question. –

Répondre

38

Si l'utilisateur qui est la chaîne de connexion a accès à plus d'une base de données, vous devez spécifier la base de données à laquelle vous souhaitez que la chaîne de connexion se connecte. Si votre utilisateur n'a qu'une base de données disponible, vous avez raison de dire que cela n'a pas d'importance. Mais c'est une bonne pratique de mettre cela dans votre chaîne de connexion.

+7

Pas tout à fait vrai. La connexion peut ne pas avoir d'autorisations sur la base de données par défaut. Donc, vous devez changer le contexte de la base de données sur la connexion – gbn

+0

Ceci est nécessaire pour Entity Framework si vous spécifiez en utilisant le paramètre -ConnectionStringName, donc certainement une bonne pratique mais aussi parfois nécessaire! –

29

Ceci est le initial database de la source de données lorsque vous vous connectez.

Modifié par souci de clarté:

Si vous disposez de plusieurs bases de données dans votre instance de SQL Server et que vous ne souhaitez pas utiliser la base de données par défaut, vous devez pouvoir préciser lequel vous allez utiliser.

+1

La première partie est correcte. La deuxième partie n'est pas correcte. Lorsque vous créez le compte, une base de données par défaut est affectée, qui sera utilisée si le catalogue initial n'est pas spécifié. Ceci est généralement par défaut maître (pour une raison inconnue). – GrayWizardx

+0

Lorsque je dis "par défaut", je veux simplement dire que vous ne qualifiez pas la base de données dans vos noms d'objets. En tout cas, j'ai clarifié ma réponse. –

8

La définition d'un catalogue initial vous permet de définir la base de données que les requêtes exécutées sur cette connexion utiliseront par défaut. Si vous ne définissez pas cette option pour une connexion à un serveur dans lequel plusieurs bases de données sont présentes, vous devrez dans plusieurs cas avoir une instruction USE dans chaque requête afin de déclarer explicitement la base de données sur laquelle vous souhaitez exécuter la requête. Le paramètre Initial Catalog est un bon moyen de déclarer explicitement une base de données par défaut.

Questions connexes