Поделиться через


sp_db_vardecimal_storage_format (Transact-SQL)

Область применения: SQL Server

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

Внимание

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

Синтаксис

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

Аргументы

[ @dbname = ] N'dbname'

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

[ @vardecimal_storage_format = ] 'vardecimal_storage_format'

Указывает, включен ли формат хранилища vardecimal . @vardecimal_storage_format — varchar(3) с значением по умолчаниюNULL. @vardecimal_storage_format может быть ON или OFF. Если указано имя базы данных, но @vardecimal_storage_format опущен, возвращается текущий параметр указанной базы данных.

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

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

0 (успешно) или 1 (сбой).

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

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

Если аргумент @vardecimal_storage_format не указан, sp_db_vardecimal_storage_format возвращает столбцы Database Name и аргументVardecimal State.

Замечания

sp_db_vardecimal_storage_formatвозвращает состояние vardecimal, но не может изменить состояние vardecimal.

sp_db_vardecimal_storage_format завершается ошибкой в следующих обстоятельствах:

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

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

Изменение состояния 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