RuleId |
SR0009 |
カテゴリ |
Microsoft.Design |
互換性に影響する変更点 |
あり |
原因
1 つ以上の可変長データ型の長さが 1 または 2 です。
規則の説明
VARCHAR、NVARCHAR、VARBINARY などの可変長データ型を使用すると、データ型に格納される値の長さを追跡するために追加のストレージ コストが発生します。 また、可変長の列が固定長のすべての列の後に格納されるため、パフォーマンスに影響を及ぼす可能性があります。
![]() |
---|
VARCHAR などの可変長の型を宣言して長さを指定しないと、警告が表示されます。 この警告は、(指定しない場合) 既定の長さが 1 であるために表示されます。 |
違反の修正方法
型の長さが非常に小さく (サイズ 1 または 2) 一貫性がある場合は、CHAR、NCHAR、BINARY などの固定長の型として宣言します。
警告を抑制する状況
この警告は抑制しないでください。
使用例
次の例では、2 つのテーブルの定義を示しています。 最初のテーブルは、長さが 2 の可変長の文字列を宣言します。2 番目のテーブルは、代わりに固定長の文字列を宣言することで、警告を回避します。
CREATE TABLE [dbo].[TableWithWarning]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[c1] INT NOT NULL PRIMARY KEY,
[c2] INT,
[c3] INT,
[SmallString] VARCHAR(2)
)
ON [PRIMARY]
CREATE TABLE [dbo].[FixedTable]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[c1] INT NOT NULL PRIMARY KEY,
[c2] INT,
[c3] INT,
[SmallString] CHAR(2)
)
ON [PRIMARY]
可変長の型のデータは、物理的に固定長の型のデータの後ろに格納されます。 したがって、空ではないテーブルで列を可変長から固定長に変更すると、データが移動します。