sp_db_vardecimal_storage_format (Transact-SQL)

Se aplica a:SQL Server

Devuelve el estado del formato de almacenamiento vardecimal actual de una base de datos, o habilita una base de datos para el formato de almacenamiento vardecimal. A partir de SQL Server 2008 (10.0.x), las bases de datos de usuario siempre están habilitadas. La habilitación de bases de datos para el formato de almacenamiento vardecimal solo es necesaria en SQL Server 2005 (9.x).

Nota:

SQL Server 2019 (15.x) admite el formato de almacenamiento vardecimal; sin embargo, dado que la compresión de nivel de fila alcanza los mismos objetivos, el formato de almacenamiento vardecimal está en desuso. Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Importante

El cambio del estado del formato de almacenamiento vardecimal de una base de datos puede afectar a la copia de seguridad y la restauración, creación de reflejo de la base de datos, sp_attach_db, el trasvase de registros y la replicación.

Sintaxis

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

Argumentos

[ @dbname= ] 'database_name'
Es el nombre de la base de datos para la que se cambia el formato de almacenamiento. database_name es sysname, sin ningún valor predeterminado. Si se omite el nombre de la base de datos, se devuelve el estado del formato de almacenamiento vardecimal de todas las bases de datos de la instancia de SQL Server.

[ @vardecimal_storage_format= ] {'ON'|' OFF'}
Especifica si el formato de almacenamiento vardecimal está habilitado. @vardecimal_storage_format puede ser ON u OFF. El parámetro es varchar(3), sin valor predeterminado. Si se proporciona un nombre de base de datos pero se omite @vardecimal_storage_format, se devuelve la configuración actual de la base de datos especificada.

Importante

Este argumento no tiene ningún efecto en SQL Server 2008 (10.0.x) o versiones posteriores.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Si el formato de almacenamiento de la base de datos no se puede cambiar, sp_db_vardecimal_storage_format devuelve un error. Si la base de datos ya se encuentra en el estado especificado, el procedimiento almacenado no tiene efecto.

Si no se proporciona el @vardecimal_storage_format argumento , devuelve las columnas Nombre de la base de datos y El estado Vardecimal.

Comentarios

sp_db_vardecimal_storage_format devuelve el estado vardecimal pero no lo puede cambiar.

sp_db_vardecimal_storage_format será incorrecto en las siguientes circunstancias:

  • Existen usuarios activos en la base de datos.

  • La base de datos está habilitada para la creación del reflejo.

  • La edición de SQL Server no admite el formato de almacenamiento vardecimal.

Para cambiar el estado del formato de almacenamiento vardecimal a OFF, una base de datos debe establecerse en un modelo de recuperación simple. Cuando una base de datos se establece en el modelo de recuperación simple, la cadena de registros se interrumpe. Haga una copia de seguridad de toda la base de datos después de configurar el estado del formato de almacenamiento vardecimal en OFF.

El cambio al estado OFF será incorrecto si existen tablas que usan la compresión de base de datos vardecimal. Para cambiar el formato de almacenamiento de una tabla, use sp_tableoption. Para determinar las tablas de una base de datos que usan el formato de almacenamiento vardecimal, use la función OBJECTPROPERTY y busque la propiedad TableHasVarDecimalStorageFormat, tal y como se indica en el siguiente ejemplo.

USE AdventureWorks2022;  
GO  
SELECT name, object_id, type_desc  
FROM sys.objects   
 WHERE OBJECTPROPERTY(object_id,   
   N'TableHasVarDecimalStorageFormat') = 1 ;  
GO  

Ejemplos

El siguiente código habilita la compresión en la base de datos AdventureWorks2022, confirma el estado y, a continuación, comprime las columnas decimales y numéricas de la tabla 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  

Consulte también

procedimientos almacenados de Motor de base de datos (Transact-SQL)