SR0009 : Évitez d'utiliser des types de longueur de variable dont la taille est 1 ou 2
Id de la règle |
SR0009 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Oui |
Cause
Un ou plusieurs types de données de longueur variable ont une longueur de 1 ou 2.
Description de la règle
Lorsque vous utilisez des types de données de longueur variable comme VARCHAR, NVARCHAR et VARBINARY, vous encourez des coûts de stockage supplémentaires pour suivre la longueur de la valeur stockée dans le type de données. De plus, les colonnes de longueur variable sont stockées après toutes les colonnes de longueur fixe, qui peut avoir des conséquences de performance.
Notes
Vous recevrez également un avertissement si vous déclarez un type de longueur variable, tel que VARCHAR, mais que vous ne spécifiez pas de longueur. Cet avertissement se produit parce que, si elle n'est pas spécifiée, la longueur par défaut est 1.
Comment corriger les violations
Si la longueur du type sera très petite (de taille 1 ou 2) et cohérente, déclarez-les comme un type de longueur fixe, tel que CHAR, NCHAR et BINARY.
Quand supprimer les avertissements
Vous ne devez pas supprimer cet avertissement.
Exemple
Cet exemple montre des définitions pour deux tables. La première table déclare une longueur de 2 pour une chaîne de longueur variable. La deuxième table déclare une chaîne de longueur fixe à la place, ce qui évite l'avertissement.
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]
Les données pour les types de longueur variable sont stockées physiquement après les données pour les types de longueur fixe. Par conséquent, vous provoquez un mouvement des données si vous modifiez une colonne de longueur variable en colonne de longueur fixe dans une table qui n'est pas vide.
Voir aussi
Concepts
Analyse du code de base de données pour en améliorer la qualité