如何跟踪Microsoft.Rules.Data.SR0009-避免仅使用一个元素的VARCHAR

问题描述 投票:0回答:1

我有一个遗留数据库项目,在构建时显示警告-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。

任何想法我该如何追踪触发此警告的原因?

visual-studio tsql static-code-analysis sqlproj
1个回答
0
投票

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                    |
© www.soinside.com 2019 - 2024. All rights reserved.