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?
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:
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.
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.
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.
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.
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.
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_rename
funcione (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
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 '-'.
-
cuando puede usar un guión bajo_
y no tener que encerrar el nombre entre corchetes?