sysname
er en indbygget datatype begrænset til 128 Unicode-tegn, der, IIRC, primært bruges til at gemme objektnavne ved oprettelse af scripts. Dens værdi kan ikke være NULL
Det er grundlæggende det samme som at bruge nvarchar(128) NOT NULL
REDIGER
Som nævnt af @Jim i kommentarerne, tror jeg ikke, der er en rigtig business case, hvor du ville bruge sysname
for at være ærlig. Det bruges hovedsageligt af Microsoft, når du bygger det interne sys
tabeller og lagrede procedurer osv. i SQL Server.
For eksempel ved at udføre Exec sp_help 'sys.tables'
du vil se, at kolonnen name
er defineret som sysname
dette er fordi værdien af dette faktisk er et objekt i sig selv (en tabel)
Jeg ville ikke bekymre mig for meget om det.
Det er også værd at bemærke, at for de mennesker, der stadig bruger SQL Server 6.5 og lavere (er der stadig folk, der bruger det?) den indbyggede type sysname
svarer til varchar(30)
Dokumentation
sysname
er defineret med dokumentationen for nchar
og nvarchar
, i bemærkningssektionen:
sysname er en systemleveret brugerdefineret datatype, der funktionelt svarer til nvarchar(128) , bortset fra at den ikke er nullbar. sysname bruges til at henvise til databaseobjektnavne.
For at præcisere ovenstående bemærkninger, som standard sysname er defineret som NOT NULL
det er bestemt muligt at definere den som nullbar. Det er også vigtigt at bemærke, at den nøjagtige definition kan variere mellem forekomster af SQL Server.
Brug af specielle datatyper
sysname datatype bruges til tabelkolonner, variabler og storedprocedure-parametre, der gemmer objektnavne. Den nøjagtige definition afsysname er relateret til reglerne for identifikatorer. Derfor kan det variere mellem forekomster af SQL Server. sysname er funktionelt det samme som nvarchar(128) bortset fra at sysname som standard er IKKE NULL. Tidligere versioner af SQL Server, sysname er defineret som varchar(30).
Nogle yderligere oplysninger om sysname
tillade eller forbyde NULL
værdier kan findes her https://stackoverflow.com/a/52290792/300863
Bare fordi det er standarden (at være IKKE NULL), garanterer det ikke, at det bliver det!