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á!