Bagikan melalui


sp_db_vardecimal_storage_format (T-SQL)

Berlaku untuk: SQL Server

Mengembalikan status format penyimpanan vardecimal database saat ini atau mengaktifkan database untuk format penyimpanan vardecimal. Di SQL Server 2008 (10.0.x) dan versi yang lebih baru, database pengguna selalu diaktifkan. Namun, karena kompresi tingkat baris mencapai tujuan yang sama, format penyimpanan vardecimal tidak digunakan lagi. Mengaktifkan database untuk format penyimpanan vardecimal hanya diperlukan di SQL Server 2005 (9.x).

Penting

Mengubah status format penyimpanan vardecimal database dapat memengaruhi pencadangan dan pemulihan, pencerminan database, sp_attach_dbpengiriman log, dan replikasi.

Sintaks

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

Argumen

[ @dbname = ] N'dbname'

Nama database yang format penyimpanannya akan diubah. @dbname adalah sysname, dengan default NULL. Jika nama database dihilangkan, status format penyimpanan vardecimal dari semua database dalam instans SQL Server dikembalikan.

[ @vardecimal_storage_format = ] 'vardecimal_storage_format'

Menentukan apakah format penyimpanan vardecimal diaktifkan. @vardecimal_storage_format adalah varchar(3), dengan default NULL. @vardecimal_storage_format bisa ON atau OFF. Jika nama database disediakan tetapi @vardecimal_storage_format dihilangkan, pengaturan database yang ditentukan saat ini dikembalikan.

Argumen ini tidak berpengaruh pada SQL Server 2008 (10.0.x) dan versi yang lebih baru.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Tataan hasil

Jika format penyimpanan database tidak dapat diubah, sp_db_vardecimal_storage_format mengembalikan kesalahan. Jika database sudah dalam status yang ditentukan, prosedur tersimpan tidak berpengaruh.

Jika argumen @vardecimal_storage_format tidak disediakan, sp_db_vardecimal_storage_format mengembalikan kolom Database Name dan Vardecimal State.

Keterangan

sp_db_vardecimal_storage_format mengembalikan status vardecimal , tetapi tidak dapat mengubah status vardecimal .

sp_db_vardecimal_storage_format gagal dalam keadaan berikut:

  • Ada pengguna aktif dalam database.
  • Database diaktifkan untuk pencerminan.
  • Edisi SQL Server tidak mendukung format penyimpanan vardecimal .

Untuk mengubah status format penyimpanan vardecimal menjadi OFF, database harus diatur ke model pemulihan sederhana. Saat database diatur ke pemulihan sederhana, rantai log rusak. Lakukan pencadangan database lengkap setelah Anda mengatur status format penyimpanan vardecimal ke OFF.

Mengubah status menjadi OFF gagal jika ada tabel yang menggunakan pemadatan database vardecimal . Untuk mengubah format penyimpanan tabel, gunakan sp_tableoption. Untuk menentukan tabel mana dalam database yang menggunakan format penyimpanan vardecimal , gunakan OBJECTPROPERTY fungsi dan cari TableHasVarDecimalStorageFormat properti , seperti yang ditunjukkan dalam contoh berikut.

USE AdventureWorks2022;
GO

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

Contoh

Kode berikut mengaktifkan pemadatan dalam AdventureWorks2022 database, mengonfirmasi status, lalu memadatkan kolom desimal dan numerik dalam Sales.SalesOrderDetail tabel.

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