sysname
est un type de données intégré limité à 128 caractères Unicode qui, IIRC, est principalement utilisé pour stocker les noms d'objets lors de la création de scripts. Sa valeur ne peut pas être NULL
C'est fondamentalement la même chose que d'utiliser nvarchar(128) NOT NULL
MODIFIER
Comme mentionné par @Jim dans les commentaires, je ne pense pas qu'il y ait vraiment une analyse de rentabilisation où vous utiliseriez sysname
pour être honnête. Il est principalement utilisé par Microsoft lors de la construction du sys
interne tables et procédures stockées, etc. dans SQL Server.
Par exemple, en exécutant Exec sp_help 'sys.tables'
vous verrez que la colonne name
est défini comme sysname
c'est parce que la valeur de this est en fait un objet en soi (une table)
Je ne m'en soucierais pas trop.
Il convient également de noter que pour les personnes qui utilisent encore SQL Server 6.5 et versions antérieures (y a-t-il encore des personnes qui l'utilisent ?) le type intégré de sysname
est l'équivalent de varchar(30)
Documents
sysname
est défini avec la documentation pour nchar
et nvarchar
, dans la section des remarques :
nom_système est un type de données défini par l'utilisateur fourni par le système qui est fonctionnellement équivalent à nvarchar(128) , sauf qu'il n'est pas nullable. nom_système est utilisé pour référencer les noms d'objets de la base de données.
Pour clarifier les remarques ci-dessus, par par défaut nom_système est défini comme NOT NULL
il est certainement possible de le définir comme nullable. Il est également important de noter que la définition exacte peut varier entre les instances de SQL Server.
Utilisation de types de données spéciaux
Le nom système Le type de données est utilisé pour les colonnes de table, les variables et les paramètres de procédure stockée qui stockent les noms d'objet. La définition exacte desysname est lié aux règles des identifiants. Par conséquent, il peut varier entre les instances de SQL Server. nom_système est fonctionnellement identique à nvarchar(128) sauf que, par défaut, sysname est non nulle. Dans les versions antérieures de SQL Server, sysname est défini comme varchar(30).
Quelques informations supplémentaires sur sysname
autoriser ou interdire NULL
les valeurs peuvent être trouvées ici https://stackoverflow.com/a/52290792/300863
Ce n'est pas parce que c'est la valeur par défaut (être NOT NULL) que ce sera le cas !