66

cadena de conexión del servidor SQL Cada alguna vez veo es como la siguiente:¿Cuál es el sentido del "Catálogo inicial" en una cadena de conexión de SQL Server?

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

¿Es necesario el ajuste inicial Catálogo? (Aparentemente no, ya que la aplicación en la que estoy trabajando parece funcionar sin ella.)

Bueno, entonces, ¿para qué sirve?

+24

Hmmm, acabo de descubrir que mi aplicación puso todas las tablas creadas en el maestro. Oops. Es posible que haya aprendido la respuesta a mi pregunta. –

Respuesta

38

Si el usuario que es 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 conectar la cadena de conexión. Si su usuario tiene solo una base de datos disponible, entonces está en lo cierto de que no importa. Pero es una buena práctica poner esto en su cadena de conexión.

+7

No es del todo cierto. El inicio de sesión puede no tener permisos en la base de datos predeterminada. Por lo tanto, debe cambiar el contexto de la base de datos en la conexión – gbn

+0

. Esto es obligatorio para Entity Framework si especifica utilizando el parámetro -ConnectionStringName, por lo que definitivamente es una buena práctica pero también a veces es necesario. –

29

Este es el initial database de la fuente de datos cuando se conecta.

Editado por claridad:

Si tiene varias bases de datos en la instancia de SQL Server y no desea utilizar la base de datos por defecto, necesita alguna manera de especificar cuál de ellos va a utilizar.

+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 usará si no se especifica el catálogo inicial. Por lo general, esto por defecto es maestro (por alguna razón desconocida). – GrayWizardx

+0

Cuando digo "por defecto" simplemente me refiero a que no está calificando la base de datos en los nombres de sus objetos. En cualquier caso, he aclarado mi respuesta. –

8

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

Cuestiones relacionadas