SQL Server元数据NVarChar大小

时间:2018-08-10 23:43:35

标签: sql-server vb.net database-metadata

我们最近将SQL Server列之一从varchar修改为nvarchar,结果sys.tables中的max_length值增加了一倍。在vb版本中,我们的SQLMetadata对象是使用列的字符长度实例化的,构造函数的最后一个参数是最大长度。

应该将SQLMetadata参数更改为使用nvarchar的最大长度(以字节为单位)还是保持原样(SQL列的字符长度)?

SQLMetadataObj = new SqlMetaData("Column1", SqlDbType.NVarChar, 12)

任何帮助将不胜感激

谢谢

1 个答案:

答案 0 :(得分:0)

大概是指sys.columns而不是sys.tables。您看到的是字节数,而不是字符数。我刚刚创建了两个类型分别为varchar(50)nvarchar(50)sys.columns的列,分别显示了max_length分别为50和100。您发布该代码示例的SqlMetaData类的文档专门指出:

  

以下示例通过指定以下内容创建一个新的SqlMetaData对象:   列名称,SqlDbType.NVarChar的列数据类型和一个   最大长度为12个字符

这意味着您需要提供在表格设计器中看到的数字,而不是在sys.columns中看到的数字。