sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es el tipo de datos SYSNAME en SQL Server?

sysname es un tipo de datos incorporado limitado a 128 caracteres Unicode que, IIRC, se usa principalmente para almacenar nombres de objetos al crear scripts. Su valor no puede ser NULL

Es básicamente lo mismo que usar nvarchar(128) NOT NULL

EDITAR

Como mencionó @Jim en los comentarios, no creo que haya realmente un caso comercial en el que usaría sysname para ser sincero. Microsoft lo utiliza principalmente cuando construye el sys interno. tablas y procedimientos almacenados, etc. dentro de SQL Server.

Por ejemplo, ejecutando Exec sp_help 'sys.tables' verá que la columna name se define como sysname esto se debe a que el valor de esto es en realidad un objeto en sí mismo (una tabla)

Yo no me preocuparía demasiado por eso.

También vale la pena señalar que para aquellas personas que aún usan SQL Server 6.5 y versiones anteriores (¿todavía hay personas que lo usan?), el tipo incorporado de sysname es el equivalente de varchar(30)

Documentación

sysname se define con la documentación para nchar y nvarchar , en la sección de comentarios:

nombre del sistema es un tipo de datos definido por el usuario proporcionado por el sistema que es funcionalmente equivalente a nvarchar(128) , excepto que no es anulable. nombre del sistema se utiliza para hacer referencia a los nombres de los objetos de la base de datos.

Para aclarar los comentarios anteriores, por predeterminado nombre del sistema se define como NOT NULL ciertamente es posible definirlo como anulable. También es importante tener en cuenta que la definición exacta puede variar entre las instancias de SQL Server.

Uso de tipos de datos especiales

El nombre del sistema El tipo de datos se utiliza para columnas de tablas, variables y parámetros de procedimientos almacenados que almacenan nombres de objetos. La definición exacta de sysname está relacionado con las reglas para los identificadores. Por lo tanto, puede variar entre instancias de SQL Server. nombre del sistema es funcionalmente igual que nvarchar(128) excepto que, de forma predeterminada, sysname No es nulo. En versiones anteriores de SQL Server, sysname se define como varchar(30).

Más información sobre sysname permitir o no permitir NULL los valores se pueden encontrar aquí https://stackoverflow.com/a/52290792/300863

¡El hecho de que sea el valor predeterminado (NO NULO) no garantiza que lo será!