将名称存储为"sysname"而不是"nvarchar(128)"有什么好处?

3 sql sql-server sql-server-2012

我希望创建一个表来存储有关存储过程的信息.我需要存储SP_Name.我最初的计划是使用SP_Name NVARCHAR(128) NOT NULL.

从程序我将使用OBJECT_NAME(@@PROCID)函数来获取SP_Name列的值.

technet不提供有关SYSNAME数据类型的大量信息.SQL Server中的SYSNAME数据类型是什么?问题只解释它是什么,但不解释它是如何工作的,另外答案是将近3年,微软在2012年和2014年版本中对SQL Server进行了许多升级.

请问我再次存储的任何好处SP_NameSYSNAMENVARCHAR(128)栏?或者我应该避免使用可能在以后的版本中删除或更改的专有数据类型?

Mar*_*ith 6

它提供了一个抽象,可以保护您免受实现细节的影响.好处是如果定义在将来的版本中发生变化,您的代码仍然可以正常工作.

sysname过去相当于varchar(30).例如,如果SQL Server 2016允许对象标识符长度为256个字符,则无需查找和更新所有硬编码的128.

我也更喜欢使用它,因为在语义上似乎更整洁地使用该数据类型来存储对象标识符的列/变量.