sp_db_vardecimal_storage_format (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis)

Retorna o formato de armazenamento vardecimal atual de um banco de dados ou habilita um banco de dados para formato de armazenamento vardecimal. A partir do SQL Server 2008, os bancos de dados de usuário ficam sempre habilitados. A habilitação de bancos de dados para o formato de armazenamento vardecimal é necessária apenas no SQL Server 2005 (9.x).

Observação

O SQL Server 2019 (15.x) oferece suporte ao formato de armazenamento vardecimal; porém, como a compactação em nível de linha alcança as mesmas metas, o formato de armazenamento vardecimal é preterido. Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

Importante

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.

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 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 ' | ' Desativado '}
Especifica se o formato de armazenamento vardecimal está habilitado. @vardecimal_storage_format pode ser 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.

Importante

Esse argumento não tem nenhum efeito no SQL Server 2008 ou em versões posteriores.

Valores do 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 @vardecimal_storage_format argumento não for fornecido, retornará o nome do banco de dados de colunas e o estado vardecimal.

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 AdventureWorks2012 ;  
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 AdventureWorks2012, 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 'AdventureWorks2012', 'ON' ;  
GO  
  
-- Check the vardecimal storage format state for  
-- all databases in the instance.  
EXEC sp_db_vardecimal_storage_format ;  
GO  
  
USE AdventureWorks2012 ;  
GO  
  
EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;  
GO  

Consulte Também

Mecanismo de Banco de Dados procedimentos armazenados (Transact-SQL)