Compartilhar via


sp_db_vardecimal_storage_format (Transact-SQL)

Retorna o formato de armazenamento vardecimal atual de um banco de dados ou habilita um banco de dados para formato de armazenamento vardecimal. No SQL Server 2008, os bancos de dados de usuários ficam sempre habilitados. Requer o SQL Server 2005, Service Pack 2 ou posterior. Formato de armazenamento vardecimal está disponível apenas nas edições Enterprise, Developer e Evaluation do SQL Server.

ObservaçãoObservação

A habilitação de bancos de dados para o formato de armazenamento vardecimal é necessária apenas no SQL Server 2005.

Observação importanteImportante

Alterar o estado do formato de armazenamento vardecimal de um banco de dados pode afetar backup e recuperação, espelhamento de banco de dados, sp_attach_db, envio de logs e replicação. Para obter informações sobre o formato de armazenamento vardecimal, consulte Armazenando dados decimais como comprimento variável.

Sintaxe

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

Argumentos

  • [ @dbname = ] 'database_name'
    É o nome do banco de dados para o qual o formato de armazenamento deve ser alterado. database_name é sysname, sem padrão. Se o nome do banco de dados for omitido, os status do formato de armazenamento vardecimal de todos os bancos de dados na instância do SQL Server serão retornados.

  • [ @vardecimal_storage_format = ] {'ON'|'OFF'}
    Especifica se o formato de armazenamento vardecimal está habilitado. @vardecimal_storage_format pode estar ON ou OFF. O parâmetro é varchar(3), sem padrão. Se um nome de banco de dados for fornecido, mas o @vardecimal_storage_format for omitido, a configuração atual do banco de dados especificado será retornada. Esse argumento não tem nenhum efeito no SQL Server 2008 ou em versões posteriores.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Conjuntos de resultados

Se o formato de armazenamento do banco de dados não puder ser alterado, sp_db_vardecimal_storage_format retornará um erro. Se o banco de dados já estiver no estado especificado, o procedimento armazenado não terá nenhum efeito.

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

Comentários

sp_db_vardecimal_storage_format retorna o estado de vardecimal, mas não pode alterar o estado de vardecimal.

sp_db_vardecimal_storage_format falhará nas seguintes circunstâncias:

  • Há usuários ativos no banco de dados.

  • O banco de dados está habilitado para espelhamento.

  • A edição do SQL Server não oferece suporte ao formato de armazenamento vardecimal.

Para alterar o formato de armazenamento vardecimal para OFF, um banco de dados deve ser definido como modo de recuperação simples. Quando um banco de dados está definido como modo de recuperação simples, a cadeia de logs é interrompida. Execute um backup completo do banco de dados depois de definir o formato de armazenamento vardecimal como OFF.

A alteração do estado para OFF falhará se houver tabelas que usam compactação de banco de dados vardecimal. Para alterar o formato de armazenamento de uma tabela, use sp_tableoption. Para determinar quais tabelas de um banco de dados usam o formato de armazenamento vardecimal, use a função OBJECTPROPERTY e procure a propriedade TableHasVarDecimalStorageFormat, conforme mostrado no exemplo a seguir.

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

Exemplos

O código a seguir habilita a compactação no banco de dados AdventureWorks2008R2, confirma o estado e, em seguida, compacta as colunas decimais e numéricas da tabela 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