¿Está bien poner puntos en los nombres de las bases de datos de SQL Server?


27

Si uso un nombre de base de datos con un punto en SQL Server (2005 o 2008), algo como "MyApp.Sales", ¿esto causará algún problema?

Respuestas:


60

Usted puede , pero no lo haría. Siempre tendría que ajustar el nombre de la base de datos con corchetes como [MyApp.Sales].

En resumen: si valoras tu cordura, no lo hagas.


36

Creo que es una muy mala idea, incluso si es técnicamente posible.

Con los años descubrí que muchas personas tienen problemas para entender la convención de nomenclatura de cuatro partes, aunque parece bastante obvio:

server_name.database_name.schema_name.object_name

Imagina lo que sucederá si ven algo como esto:

MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts

o:

[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]

Mantener las cosas simples es importante.


15

En caso de que alguien más se encuentre con esta pregunta ...

Tenga en cuenta que no solo es una mala idea porque los usuarios pueden estar confundidos, sino también porque algunas herramientas pueden confundirse.

Incluso Microsoft mismo tiene problemas con esto. Si intenta conectar su base de datos a una hoja de Excel utilizando Microsoft Query (a través de ODBC), obtendrá un asistente de configuración que le permite elegir la base de datos a la que desea conectarse. Sin embargo, elegir una base de datos que contenga un punto producirá un error que indica que no se pudo encontrar el servidor. Parece que el asistente no comprueba si los valores necesitan escapar y concatena ciegamente los identificadores.

Por supuesto, existen soluciones alternativas, pero se ahorra algunos problemas al no hacerlo desde el principio.


7

No utilice el punto en los nombres de bases de datos, nombres de publicaciones, nombres de usuarios. Y le recomiendo que nunca use un punto en el nombre (columna, tabla, vista, base de datos, etc.).

Actualización: puedo confirmar que el guión menos "-" causa problemas similares.

Esto es lo que pasa:

SQL Server utiliza scripts para uso interno, como los procedimientos almacenados del sistema. Como ya se mencionó aquí, los comandos que usa a veces lo obligan a poner el nombre entre paréntesis y eso (¿en serio Microsoft?) No (siempre) está bien para el uso de procedimientos almacenados .

De hecho, ya no puedo limpiar la información de conexión porque el procedimiento almacenado recorre en iteración todas las bases de datos y no escapa a los nombres de las bases de datos de manera adecuada. Esta iteración es tan compleja que no pude parchearla en más de 8 SP.

Además, no puedo usar MMC o scripts para editar conflictos de replicación . Si tiene una (¡Una!) Base de datos que tiene un punto dentro de su nombre, estos problemas ocurrirán en everey db, cada publicación.

Estas son las ocurrencias que tengo. Las acciones complejas de SQL se procesan en lenguaje sql y funcionarán bien, si la base está bien.

Si intenta conectar su base de datos a una hoja de Excel utilizando Microsoft Query (a través de ODBC), obtendrá un asistente de configuración que le permite elegir la base de datos a la que desea conectarse. - aKzenT

Estos errores se pueden encontrar con mayor frecuencia en software de terceros, por lo que nunca use puntos en cada nombre de nada en el servidor SQL.


6

Hay muchos caracteres permitidos en los nombres, pero la convención y el sentido común limitan el uso de caracteres especiales. '_' (subrayado) es el separador más seguro comprobado y mantiene la facilidad de lectura.


1

Mismo trato: el nombre de la clave externa no debe contener ningún punto.

Descubrí que si necesita cambiar el nombre de ese nombre, necesitará corchetes para que sp_renamefuncione (porque a medida que cambia el nombre de una clave externa, debe especificar el esquema).

Ejemplo:

sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'

Si olvida los corchetes, obtiene un error: 15225


-1

Uno de nuestros proveedores ha elegido introducir el nombre del esquema: [System.Activities.DurableInstancing]. Se ha roto nuestra herramienta de carga de datos, por lo que ahora tenemos un mayor desarrollo para hacer frente a sus rarezas. Solo no lo hagas. Utilizar una '-'.


55
¿Por qué usar un guión -cuando puede usar un guión bajo _y no tener que encerrar el nombre entre corchetes?
ErikE

3
Un signo negativo causará otros problemas pero similares.
Daniel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.