我们最近将SQL Server列之一从varchar
修改为nvarchar
,结果sys.tables
中的max_length值增加了一倍。在vb版本中,我们的SQLMetadata
对象是使用列的字符长度实例化的,构造函数的最后一个参数是最大长度。
应该将SQLMetadata
参数更改为使用nvarchar
的最大长度(以字节为单位)还是保持原样(SQL列的字符长度)?
SQLMetadataObj = new SqlMetaData("Column1", SqlDbType.NVarChar, 12)
任何帮助将不胜感激
谢谢
答案 0 :(得分:0)
大概是指sys.columns
而不是sys.tables
。您看到的是字节数,而不是字符数。我刚刚创建了两个类型分别为varchar(50)
,nvarchar(50)
和sys.columns
的列,分别显示了max_length
分别为50和100。您发布该代码示例的SqlMetaData
类的文档专门指出:
以下示例通过指定以下内容创建一个新的SqlMetaData对象: 列名称,SqlDbType.NVarChar的列数据类型和一个 最大长度为12个字符。
这意味着您需要提供在表格设计器中看到的数字,而不是在sys.columns
中看到的数字。