sp_db_vardecimal_storage_format (Transact-SQL)

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. En SQL Server 2008, las bases de datos de usuario siempre están habilitadas. Requiere el Service Pack 2 de SQL Server 2005 o posteriores. El formato de almacenamiento vardecimal sólo está disponible en las ediciones Enterprise, Developer y Evaluation de SQL Server.

Nota

La habilitación de las bases de datos para el formato de almacenamiento vardecimal sólo es necesaria en SQL Server 2005.

Nota importanteImportante

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. Para obtener información acerca del formato de almacenamiento vardecimal, vea Almacenar datos decimales como longitud variable.

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 de tipo sysname y no tiene ningún valor predeterminado. Si el nombre de la base de datos se omite, se devuelven los estados del formato de almacenamiento vardecimal de todas las base 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. Este argumento no tiene ningún efecto en SQL Server 2008 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 argumento @vardecimal_storage_format, devuelve las columnas Database Name y el Vardecimal State.

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, se debe configurar una base de datos en el modo de recuperación simple. Cuando una base de datos se configura en el modo de recuperación simple, la cadena de registros se rompe. 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 AdventureWorks2008R2 ;
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 AdventureWorks2008R2, 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 'AdventureWorks2008R2', 'ON' ;
GO

-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format ;
GO

USE AdventureWorks2008R2 ;
GO

EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;
GO