Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se:SQL Server
Retorna o estado atual do formato de armazenamento vardecimal de um banco de dados ou habilita um banco de dados para o formato de armazenamento vardecimal . No SQL Server 2008 (10.0.x) e versões posteriores, os bancos de dados de usuário estão sempre habilitados. No entanto, como a compactação em nível de linha atinge as mesmas metas, o formato de armazenamento vardecimal foi preterido. A habilitação de bancos de dados para o formato de armazenamento vardecimal só é necessária no SQL Server 2005 (9.x).
Importante
Alterar o estado do formato de armazenamento vardecimal de um banco de dados pode afetar o backup e a recuperação, o espelhamento de banco de dados, sp_attach_dbo envio de logs e a replicação.
Sintaxe
sp_db_vardecimal_storage_format
[ [ @dbname = ] N'dbname' ]
[ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]
Argumentos
@dbname [ = ] N'dbname'
O nome do banco de dados para o qual o formato de armazenamento deve ser alterado.
@dbname é sysname, com um padrão de NULL. Se o nome do banco de dados for omitido, o status do formato de armazenamento vardecimal de todos os bancos de dados na instância do SQL Server será retornado.
@vardecimal_storage_format [ = ] 'vardecimal_storage_format'
Especifica se o formato de armazenamento vardecimal está habilitado.
@vardecimal_storage_format é varchar(3), com um padrão de NULL.
@vardecimal_storage_format pode ser ON ou OFF. Se um nome de banco de dados for fornecido, mas @vardecimal_storage_format for omitido, a configuração atual do banco de dados especificado será retornada.
Esse argumento não tem efeito no SQL Server 2008 (10.0.x) e versões posteriores.
Valores do código de retorno
0 (sucesso) ou 1 (falha).
Conjunto 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, sp_db_vardecimal_storage_format retornará as colunas Database Name e o Vardecimal State.
Comentários
sp_db_vardecimal_storage_format retorna o estado vardecimal , mas não pode alterar o estado vardecimal .
sp_db_vardecimal_storage_format falha 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 dá suporte ao formato de armazenamento vardecimal .
Para alterar o estado do formato de armazenamento vardecimal para OFF, um banco de dados deve ser definido como o modelo de recuperação simples. Quando um banco de dados é definido como recuperação simples, a cadeia de logs é interrompida. Execute um backup completo do banco de dados depois de definir o estado do formato de armazenamento vardecimal como OFF.
Alterar o estado para OFF falhará se houver tabelas usando compactação de banco de dados vardecimal . Para alterar o formato de armazenamento de uma tabela, use sp_tableoption. Para determinar quais tabelas em um banco de dados estão usando o formato de armazenamento vardecimal , use a OBJECTPROPERTY função e pesquise a TableHasVarDecimalStorageFormat propriedade, conforme mostrado no exemplo a seguir.
USE AdventureWorks2022;
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 AdventureWorks2025, confirma o estado e, em seguida, compacta as colunas decimais e numéricas da tabela Sales.SalesOrderDetail.
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