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