Partilhar via


sp_db_vardecimal_storage_format (Transact-SQL)

Aplica-se a:SQL Server

Devolve o estado atual do formato de armazenamento vardecimal de uma base de dados ou permite uma base de dados para o formato vardecimal . No SQL Server 2008 (10.0.x) e versões posteriores, as bases de dados de utilizadores estão sempre ativadas. No entanto, como a compressão ao nível das linhas atinge os mesmos objetivos, o formato de armazenamento vardecimal está obsoleto. Ativar bases de dados para o formato de armazenamento vardecimal só é necessário no SQL Server 2005 (9.x).

Importante

Alterar o estado do formato de armazenamento vardecimal de uma base de dados pode afetar backup e recuperação, espelhamento de bases de dados, sp_attach_dbenvio de registos e replicação.

Sintaxe

sp_db_vardecimal_storage_format
    [ [ @dbname = ] N'dbname' ]
    [ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]

Arguments

[ @dbname = ] N'dbname'

O nome da base de dados para a qual o formato de armazenamento deve ser alterado. @dbname é sysname, com um padrão de NULL. Se o nome da base de dados for omitido, o estado do formato de armazenamento vardecimal de todas as bases de dados na instância do SQL Server é devolvido.

[ @vardecimal_storage_format = ] 'vardecimal_storage_format'

Especifica se o formato de armazenamento vardecimal está ativado. @vardecimal_storage_format é varchar(3), com um padrão de NULL. @vardecimal_storage_format pode ser ON ou OFF. Se for fornecido um nome de base de dados mas @vardecimal_storage_format for omitido, a definição atual da base de dados especificada é devolvida.

Este argumento não tem efeito no SQL Server 2008 (10.0.x) e versões posteriores.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Conjunto de resultados

Se o formato de armazenamento da base de dados não puder ser alterado, devolve sp_db_vardecimal_storage_format um erro. Se a base de dados já estiver no estado especificado, o procedimento armazenado não tem efeito.

Se o argumento @vardecimal_storage_format não for fornecido, sp_db_vardecimal_storage_format devolve as colunas Database Name e o Vardecimal State.

Observações

sp_db_vardecimal_storage_format Devolve o estado vardecimal , mas não pode alterar o estado vardecimal .

sp_db_vardecimal_storage_format falha nas seguintes circunstâncias:

  • Existem utilizadores ativos na base de dados.
  • A base de dados está ativada para espelhamento.
  • A edição do SQL Server não suporta formato de armazenamento vardecimal .

Para alterar o estado do formato de armazenamento vardecimal para OFF, uma base de dados deve ser definida para o modelo de recuperação simples. Quando uma base de dados é definida para recuperação simples, a cadeia de logaritários é quebrada. Faça uma cópia de segurança completa da base de dados depois de definir o estado do formato de armazenamento vardecimal para OFF.

Alterar o estado para OFF falha se existirem tabelas usando compressão vardecimal de base de dados. Para alterar o formato de armazenamento de uma tabela, use sp_tableoption. Para determinar quais as tabelas numa base de dados que usam o formato de armazenamento vardecimal , use a OBJECTPROPERTY função e procure a TableHasVarDecimalStorageFormat propriedade, como mostrado no exemplo seguinte.

USE AdventureWorks2022;
GO

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

Examples

O código seguinte permite a compressão na AdventureWorks2025 base de dados, confirma o estado e depois comprime as colunas decimais e numéricas na Sales.SalesOrderDetail tabela.

USE master;
GO

EXECUTE sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO

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

USE AdventureWorks2022;
GO

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