sp_db_vardecimal_storage_format (Transact-SQL)

Применимо к:SQL Server

Возвращает текущее состояние формата хранения vardecimal для базы данных либо включает этот формат в базе данных. Начиная с SQL Server 2008 (10.0.x), пользовательские базы данных всегда включены. Включение баз данных для формата хранилища vardecimal необходимо только в SQL Server 2005 (9.x).

Примечание.

SQL Server 2019 (15.x) поддерживает формат хранилища vardecimal; Однако, поскольку сжатие на уровне строк достигает одинаковых целей, формат хранилища vardecimal не рекомендуется. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

Внимание

Изменение состояния формата хранения vardecimal для базы данных может повлиять на резервное копирование и восстановление, зеркальное отображение базы данных, sp_attach_db, доставку журналов и репликацию.

Синтаксис

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

Аргументы

[ ] @dbname= 'database_name'
Имя базы данных, формат хранения которой нужно изменить. database_name — sysname без значения по умолчанию. Если имя базы данных опущено, возвращается состояние формата хранилища vardecimal для всех баз данных в экземпляре SQL Server.

[ ] @vardecimal_storage_format= {'ON'|' OFF'}
Указывает, включен ли формат хранения vardecimal. Аргумент @vardecimal_storage_format может иметь значение ON или OFF. Параметр — varchar(3), без значения по умолчанию. Если имя базы данных указано, но аргумент @vardecimal_storage_format пропущен, то возвращается текущий параметр указанной базы данных.

Внимание

Этот аргумент не влияет на SQL Server 2008 (10.0.x) или более поздних версий.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Если формат хранения базы данных изменить нельзя, то хранимая процедура sp_db_vardecimal_storage_format возвращает ошибку. Если база данных уже находится в указанном состоянии, то хранимая процедура не вносит никаких изменений.

@vardecimal_storage_format Если аргумент не указан, возвращает столбцы Имя базы данных и состояние Vardecimal.

Замечания

Процедура sp_db_vardecimal_storage_format возвращает состояние vardecimal, но не может изменить его.

Хранимая процедура sp_db_vardecimal_storage_format завершается неуспешно в следующих случаях:

  • Отсутствуют активные пользователи базы данных.

  • Включено зеркальное отображение базы данных.

  • Выпуск SQL Server не поддерживает формат хранилища vardecimal.

Чтобы изменить состояние формата хранилища vardecimal на OFF, база данных должна иметь простую модель восстановления. Если для базы данных задана простая модель восстановления, цепочка журналов нарушается. После переключения состояния формата хранения vardecimal на OFF следует создать полную резервную копию базы данных.

Переключение в состояние OFF не будет выполнено, если в таблицах используется сжатие баз данных vardecimal. Чтобы изменить формат хранилища таблицы, используйте sp_tableoption. Определить, в каких таблицах базы данных используется формат хранения vardecimal, можно с помощью функции OBJECTPROPERTY и поиском свойства TableHasVarDecimalStorageFormat, как показано в приведенном ниже примере.

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

Примеры

В следующем коде включается сжатие в базе данных AdventureWorks2022, подтверждается состояние, а затем сжимаются десятичные и числовые столбцы в таблице Sales.SalesOrderDetail.

USE master ;  
GO  
  
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON' ;  
GO  
  
-- Check the vardecimal storage format state for  
-- all databases in the instance.  
EXEC sp_db_vardecimal_storage_format ;  
GO  
  
USE AdventureWorks2022;  
GO  
  
EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;  
GO  

См. также

ядро СУБД хранимые процедуры (Transact-SQL)