sp_db_vardecimal_storage_format (Transact-SQL)

Se aplica a: SQL Server

Devuelve el estado de formato de almacenamiento vardecimal actual de una base de datos o habilita una base de datos para el formato de almacenamiento vardecimal. En SQL Server 2008 (10.0.x) y versiones posteriores, las bases de datos de usuario siempre están habilitadas. Sin embargo, dado que la compresión de nivel de fila alcanza los mismos objetivos, el formato de almacenamiento vardecimal está en desuso. La habilitación de bases de datos para el formato de almacenamiento vardecimal solo es necesaria en SQL Server 2005 (9.x).

Importante

Cambiar el estado de formato de almacenamiento vardecimal de una base de datos puede afectar a la copia de seguridad y recuperación, la 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 = ] N'dbname' ]
    [ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]

Argumentos

[ @dbname = ] N'dbname'

Nombre de la base de datos para la que se va a cambiar el formato de almacenamiento. @dbname es sysname, con un valor predeterminado de NULL. 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 = ] 'vardecimal_storage_format'

Especifica si el formato de almacenamiento vardecimal está habilitado. @vardecimal_storage_format es varchar(3), con un valor predeterminado de NULL. @vardecimal_storage_format puede ser ON o OFF. 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.

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

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Si no se puede cambiar el formato de almacenamiento de la base de datos, 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 argumento @vardecimal_storage_format, sp_db_vardecimal_storage_format devuelve las columnas Database Name y .Vardecimal State

Comentarios

sp_db_vardecimal_storage_format devuelve el estado vardecimal , pero no puede cambiar el estado vardecimal .

sp_db_vardecimal_storage_format produce un error 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 el modelo de recuperación simple. Cuando una base de datos se establece en recuperación simple, la cadena de registros se interrumpe. Realice una copia de seguridad completa de la base de datos después de establecer el estado de formato de almacenamiento vardecimal en OFF.

Se produce un error al cambiar el estado a OFF si hay tablas que usan compresión de base de datos vardecimal . Para cambiar el formato de almacenamiento de una tabla, use sp_tableoption. Para determinar qué tablas de una base de datos usan el formato de almacenamiento vardecimal , use la OBJECTPROPERTY función y busque la TableHasVarDecimalStorageFormat propiedad , como se muestra en el ejemplo siguiente.

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