sp_db_vardecimal_storage_format (Transact-SQL)

S’applique à :SQL Server

Retourne l'état du format de stockage vardecimal actuel d'une base de données ou active une base de données pour le format de stockage vardecimal. À compter de SQL Server 2008 (10.0.x), les bases de données utilisateur sont toujours activées. L’activation des bases de données pour le format de stockage vardecimal n’est nécessaire que dans SQL Server 2005 (9.x).

Remarque

SQL Server 2019 (15.x) prend en charge le format de stockage vardecimal ; toutefois, étant donné que la compression au niveau des lignes atteint les mêmes objectifs, le format de stockage vardecimal est déconseillé. Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

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, sp_attach_db, la copie des journaux de transaction et la réplication.

Syntaxe

sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name']   
    [ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ]   
[;]  

Arguments

[ @dbname= ] 'database_name'
Nom de la base de données dont le format de stockage doit être modifié. database_name est sysname, sans valeur par défaut. 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= ] {'ON'|' OFF'}
Spécifie si le format de stockage vardecimal est activé. @vardecimal_storage_format peut prendre la valeur ON ou OFF (activé ou désactivé). Le paramètre est varchar(3), sans valeur par défaut. Si un nom de base de données est indiqué mais que @vardecimal_storage_format est omis, le paramètre actuel de la base de données spécifiée est retourné.

Important

Cet argument n’a aucun effet sur SQL Server 2008 (10.0.x) ou les versions ultérieures.

Codet de retour

0 (réussite) ou 1 (échec)

Jeux de résultats

Si le format de stockage de la 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, retourne le nom de la base de données et l’état Vardecimal.

Notes

sp_db_vardecimal_storage_format retourne l'état vardecimal mais ne peut pas le modifier.

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 du format de stockage vardecimal sur OFF, une base de données doit être définie sur un modèle de récupération simple. Lorsqu’une base de données est définie sur le modèle de récupération simple, la chaîne de journaux est interrompue. Procédez à une sauvegarde de base de données complète une fois que vous avez défini l'état du format de stockage vardecimal à OFF.

Le passage de l'état à OFF échouera 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 quelles sont les tables d'une base de données qui utilisent le format de stockage vardecimal, utilisez la fonction OBJECTPROPERTY et recherchez la propriété TableHasVarDecimalStorageFormat, comme indiqué 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  

Voir aussi

procédures stockées Moteur de base de données (Transact-SQL)