When I'm writing SQL Server scripts, I often need to store the name of SQL Server objects (like databases, schemas, tables, procedures, etc.) in variables.
That can also happen when I'm creating tables. I might need to store a SQL Server object name (like a login name or a user name) in a column of a table.
So which data type should be used? varchar(100), varchar(200), nvarchar(max), etc. etc. ??
The answer is: sysname
sysname is a built-in data type that's currently stored as nvarchar(128).
While you could use nvarchar(128), that wouldn't be a great idea. If the SQL Server team ever need to change the size of object names, you'll have a problem if you'd used nvarchar(128). If, as recommended, you'd used the sysname data type, you'll be fine.