sp_db_vardecimal_storage_format (Transact-SQL)
S'applique à : SQL Server
Retourne l’état actuel du format de stockage vardecimal d’une base de données ou active une base de données pour le format de stockage vardecimal . Dans SQL Server 2008 (10.0.x) et versions ultérieures, les bases de données utilisateur sont toujours activées. Toutefois, étant donné que la compression au niveau des lignes atteint les mêmes objectifs, le format de stockage vardecimal est déconseillé. L’activation des bases de données pour le format de stockage vardecimal n’est nécessaire que dans SQL Server 2005 (9.x).
Important
La modification de l’état du format de stockage vardecimal d’une base de données peut affecter la sauvegarde et la récupération, la mise en miroir de bases de données, la sp_attach_db
copie des journaux de transaction et la réplication.
Syntaxe
sp_db_vardecimal_storage_format
[ [ @dbname = ] N'dbname' ]
[ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]
Arguments
[ @dbname = ] N’dbname'
Nom de la base de données pour laquelle le format de stockage doit être modifié. @dbname est sysname, avec la valeur par défaut NULL
. Si le nom de la base de données est omis, l’état du format de stockage vardecimal de toutes les bases de données de l’instance de SQL Server est retourné.
[ @vardecimal_storage_format = ] 'vardecimal_storage_format'
Spécifie si le format de stockage vardecimal est activé. @vardecimal_storage_format est varchar(3), avec la valeur par défaut NULL
. @vardecimal_storage_format peut être ON
ou OFF
. Si un nom de base de données est fourni mais que @vardecimal_storage_format est omis, le paramètre actuel de la base de données spécifiée est retourné.
Cet argument n’a aucun effet sur SQL Server 2008 (10.0.x) et les versions ultérieures.
Valeurs des codes de retour
0
(réussite) or 1
(échec).
Jeu de résultats
Si le format de stockage de base de données ne peut pas être modifié, sp_db_vardecimal_storage_format
retourne une erreur. Si la base de données est déjà dans l'état spécifié, la procédure stockée est sans effet.
Si l’argument @vardecimal_storage_format n’est pas fourni, sp_db_vardecimal_storage_format
retourne les colonnes Database Name
et le Vardecimal State
.
Notes
sp_db_vardecimal_storage_format
retourne l’état vardecimal , mais ne peut pas modifier l’état vardecimal .
sp_db_vardecimal_storage_format
échoue dans les circonstances suivantes :
- Il existe des utilisateurs actifs dans la base de données.
- La base de données est activée pour la mise en miroir.
- L’édition de SQL Server ne prend pas en charge le format de stockage vardecimal .
Pour modifier l’état OFF
du format de stockage vardecimal, une base de données doit être définie sur le modèle de récupération simple. Lorsqu’une base de données est définie sur une récupération simple, la chaîne de journaux est interrompue. Effectuez une sauvegarde complète de la base de données après avoir défini l’état du format de stockage vardecimal sur OFF
.
La modification de l’état OFF
échoue si des tables utilisent la compression de base de données vardecimal . Pour modifier le format de stockage d’une table, utilisez sp_tableoption. Pour déterminer les tables d’une base de données utilisant le format de stockage vardecimal , utilisez la OBJECTPROPERTY
fonction et recherchez la TableHasVarDecimalStorageFormat
propriété, comme illustré dans l’exemple suivant.
USE AdventureWorks2022;
GO
SELECT name,
object_id,
type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'TableHasVarDecimalStorageFormat') = 1;
GO
Exemples
Le code ci-dessous autorise la compression dans la base de données AdventureWorks2022
, confirme l'état, puis compresse les colonnes décimales et numériques de la table Sales.SalesOrderDetail
.
USE master;
GO
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO
-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format;
GO
USE AdventureWorks2022;
GO
EXEC sp_tableoption 'Sales.SalesOrderDetail',
'vardecimal storage format',
1;
GO