¿Cuál es el punto de "Catálogo inicial" en una cadena de conexión de SQL Server?

91

Cada cadena de conexión de SQL Server que veo se parece a esto:

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

¿Necesito la configuración del Catálogo inicial? (Aparentemente no, ya que la aplicación en la que estoy trabajando parece funcionar sin ella).

Bueno, entonces, ¿para qué sirve?

Ryan Lundy
fuente
31
Hmmm, acabo de descubrir que mi aplicación coloca todas mis tablas creadas en master. ¡Ups! Es posible que acabe de aprender la respuesta a mi pregunta.
Ryan Lundy

Respuestas:

53

Si el nombre de usuario que está en la cadena de conexión tiene acceso a más de una base de datos, debe especificar la base de datos a la que desea que se conecte la cadena de conexión. Si su usuario solo tiene una base de datos disponible, entonces tiene razón en que no importa. Pero es una buena práctica poner esto en su cadena de conexión.

Avito
fuente
10
No es del todo cierto. Es posible que el inicio de sesión no tenga permisos en la base de datos predeterminada. Entonces, debe cambiar el contexto de la base de datos en la conexión
gbn
Esto es necesario para Entity Framework si especifica el uso del parámetro -ConnectionStringName, por lo que definitivamente es una buena práctica, ¡pero también es necesario en ocasiones!
James G
¿Puedes reformular esta respuesta? Todavía no entiendo después de leerlo dos veces.
thatWiseGuy
33

Esta es la base de datos inicial de la fuente de datos cuando se conecta.

Editado para mayor claridad :

Si tiene varias bases de datos en su instancia de SQL Server y no desea usar la base de datos predeterminada, necesita alguna forma de especificar cuál va a usar.

Andy West
fuente
1
La primera parte es correcta. La segunda parte no es correcta. Cuando crea la cuenta, se le asigna una base de datos predeterminada que se utilizará si no se especifica el catálogo inicial. Generalmente, este valor predeterminado es maestro (por alguna razón desconocida).
GrayWizardx
Cuando digo "por defecto" me refiero simplemente a cuando no está calificando la base de datos en los nombres de sus objetos. En cualquier caso, he aclarado mi respuesta.
Andy West
Me gusta la aclaración de Andy, de hecho su comentario es útil; no implica que si yo hago calificar cada base de datos en mis nombres de objeto, entonces el catálogo inicial no es tan importante / irrelevante?
The Red Pea
12

La configuración de un catálogo inicial le permite configurar la base de datos que las consultas que se ejecutan en esa conexión utilizarán de forma predeterminada. Si no configura esto para una conexión a un servidor en el que están presentes varias bases de datos, en muchos casos se le pedirá que tenga una declaración USE en cada consulta para declarar explícitamente en qué base de datos está intentando ejecutar la consulta. La configuración del Catálogo inicial es una buena forma de declarar explícitamente una base de datos predeterminada.

jliles
fuente