SQL 服务器元数据 NVarChar 大小
SQL Server MetaData NVarChar size
我们的一个 SQL 服务器列最近从 varchar
修改为 nvarchar
,因此 sys.tables
中的 max_length 值翻了一番。在 vb 对应项中,我们的 SQLMetadata
对象使用列的字符长度实例化,构造函数的最后一个参数是最大长度。
是否应该将 SQLMetadata
参数更改为使用 nvarchar
最大字节长度或保持原样(SQL 列的字符长度)?
SQLMetadataObj = new SqlMetaData("Column1", SqlDbType.NVarChar, 12)
如有任何帮助,我们将不胜感激
谢谢
大概你的意思是 sys.columns
而不是 sys.tables
。您看到的是字节数,而不是字符数。我刚刚创建了 varchar(50)
和 nvarchar(50)
类型的两列,sys.columns
分别显示了 50 和 100 的 max_length
。您发布该代码示例的 SqlMetaData
class 的文档明确指出:
The following example creates a new SqlMetaData object by specifying
the column name, a column data type of SqlDbType.NVarChar, and a
maximum length of 12 characters.
这意味着您需要提供在 table 设计器中看到的数字,而不是在 sys.columns
中看到的数字。
我们的一个 SQL 服务器列最近从 varchar
修改为 nvarchar
,因此 sys.tables
中的 max_length 值翻了一番。在 vb 对应项中,我们的 SQLMetadata
对象使用列的字符长度实例化,构造函数的最后一个参数是最大长度。
是否应该将 SQLMetadata
参数更改为使用 nvarchar
最大字节长度或保持原样(SQL 列的字符长度)?
SQLMetadataObj = new SqlMetaData("Column1", SqlDbType.NVarChar, 12)
如有任何帮助,我们将不胜感激
谢谢
大概你的意思是 sys.columns
而不是 sys.tables
。您看到的是字节数,而不是字符数。我刚刚创建了 varchar(50)
和 nvarchar(50)
类型的两列,sys.columns
分别显示了 50 和 100 的 max_length
。您发布该代码示例的 SqlMetaData
class 的文档明确指出:
The following example creates a new SqlMetaData object by specifying the column name, a column data type of SqlDbType.NVarChar, and a maximum length of 12 characters.
这意味着您需要提供在 table 设计器中看到的数字,而不是在 sys.columns
中看到的数字。