2011-02-23 81 views
14

Estoy intentando hacer alguna validación UI en un nombre de base de datos. Me dijeron desde diferentes lugares que el nombre de la base de datos de SQL Server está almacenado como sysname dentro de SQL Server. También verifiqué que al marcar el sys.Databases.Longitud máxima del nombre de la base de datos en SQL Server

Por lo tanto, hago que mi cuadro de texto en la interfaz de usuario tenga una longitud máxima de 128 caracteres. Esta es la longitud máxima del tipo sysname.

Sin embargo, encontré que en mi SQL Server 2005 Express Edition, si entro en un nombre de base de datos con 128 caracteres de longitud, que siempre se queja

No se pudo crear el archivo de registro predeterminado porque el nombre era demasiado largo

Para asegurarme de que puedo crear con éxito la base de datos, encontré que necesito establecer el límite máximo en 124 caracteres.

Mi pregunta ahora es si el límite de 124 caracteres es verdadero para todas las versiones de SQL Server en todos los sistemas operativos Windows diferentes?

+1

Posiblemente información útil: [Windows Maximum Path Length Limitation] (http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx#maxpath) – drudge

+0

Puede crear un archivo de registro de cualquier nombre en la declaración de la base de datos 'CREATE'. No tiene que contener el nombre de la base de datos ... –

Respuesta

14

El nombre del archivo de registro no necesita incluir el nombre de la base de datos.

Esto funciona bien para mí, por ejemplo.

CREATE DATABASE [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA] ON PRIMARY 
( 
NAME = N'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\A128.mdf') 
LOG ON 
( 
NAME = N'A128_log', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\A128_log.LDF') 
+3

Ya veo. Creo que entiendo el problema ahora. Hay dos límites: uno para el nombre de la base de datos y otro para el archivo de registro. Creo que tiene razón en que es porque si no especifico el nombre del archivo de registro, se agrega automáticamente "_log" al nombre de mi base de datos como mi nombre de archivo de registro. Eso hace que mi límite máximo sea 124. –

3

¿No se está encontrando con el problema de los nombres de los archivos de datos y de registro? El sistema operativo subyacente (Windows) le impone restricciones y, por lo tanto, no se puede crear la base de datos. El nombre de la base de datos puede tener 128 caracteres y funciona dado que los nombres de los archivos utilizados no son demasiado largos (cuando se usa SQL Server Management Studio genera automáticamente nombres de archivos basados ​​en los nombres de las bases de datos, y por lo tanto terminan siendo largos).

Cuestiones relacionadas