我有一个遗留数据库项目,在构建时显示警告-Avoid VARCHAR of only one element
。错误明确,原因明确,解决方法-也明确。只是...问题出在哪里?
StaticCodeAnalysis.Results.xml文件仅指示此:
<Problem>
<Rule>Microsoft.Rules.Data.SR0009</Rule>
<ProblemDescription>Avoid VARCHAR of only one element.</ProblemDescription>
<SourceFile />
<Line>0</Line>
<Column>0</Column>
<Severity>Warning</Severity>
</Problem>
我已检查(Ctrl + Shift + F)该项目中的所有文件,但它们都不包含任何长度为1的VARCHAR或NVARCHAR。
任何想法我该如何追踪触发此警告的原因?
VARCHAR(n)和NVARCHAR(n)仅应在存储的字符串的大小可变时使用,因为存储空间已优化。我认为此警告表示您正在丢失存储空间,因为根据doc
char [(n)] ...存储大小为n个字节,并且可以存储的字符数也为n
varchar [(n | max)]存储大小为n个字节+ 2个字节,并且可以存储的字符数也为n。
您每条记录丢失两个字节:
| type | storage size | number of characters |
| char(1) | 1 bytes | 1 |
| varchar(1) | 1 + 2 bytes | 1 |