/* --Step 1: Create database and table USE [master] GO CREATE DATABASE [StorageTests] ON PRIMARY ( NAME = N'StorageTests', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\StorageTests.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'StorageTests_log', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\StorageTests_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO EXEC dbo.sp_dbcmptlevel @dbname=N'StorageTests', @new_cmptlevel=90 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [StorageTests].[dbo].[sp_fulltext_database] @action = 'disable' end GO ALTER DATABASE [StorageTests] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [StorageTests] SET ANSI_NULLS OFF GO ALTER DATABASE [StorageTests] SET ANSI_PADDING OFF GO ALTER DATABASE [StorageTests] SET ANSI_WARNINGS OFF GO ALTER DATABASE [StorageTests] SET ARITHABORT OFF GO ALTER DATABASE [StorageTests] SET AUTO_CLOSE OFF GO ALTER DATABASE [StorageTests] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [StorageTests] SET AUTO_SHRINK OFF GO ALTER DATABASE [StorageTests] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [StorageTests] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [StorageTests] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [StorageTests] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [StorageTests] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [StorageTests] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [StorageTests] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [StorageTests] SET ENABLE_BROKER GO ALTER DATABASE [StorageTests] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [StorageTests] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [StorageTests] SET TRUSTWORTHY OFF GO ALTER DATABASE [StorageTests] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [StorageTests] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [StorageTests] SET READ_WRITE GO ALTER DATABASE [StorageTests] SET RECOVERY FULL GO ALTER DATABASE [StorageTests] SET MULTI_USER GO ALTER DATABASE [StorageTests] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [StorageTests] SET DB_CHAINING OFF GO USE [StorageTests] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[VarDecimalTest]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](50) NULL, [decimalValue] [decimal](18, 5) NULL CONSTRAINT [DF_VarDecimal_decimalValue] DEFAULT ((0)), CONSTRAINT [PK_VarDecimal] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF */ -- Step 2: populate new table use StorageTests set nocount on; truncate table dbo.VarDecimalTest declare @i int declare @name varchar(50) declare @decimalvalue decimal(18,5) set @i = 10000 set @name = 'Value' + Convert(varchar(5), (10001 - @i)) set @decimalValue = Cast((@i/10.000) AS decimal(18,5)) while @i > 0 begin insert into dbo.VarDecimalTest (name, decimalValue) values(@name, @decimalvalue) set @i = @i - 1 set @name = 'Value' + Convert(varchar(5), (10001 - @i)) set @decimalValue = Convert(decimal(18, 5), (@i/10.00000)) end /* -- Step 3: Enable VarDecimal on database exec sp_db_vardecimal_storage_format 'StorageTests', 'ON' */ /* -- Step 4: Enable VarDecimal on table sp_tableoption 'dbo.VarDecimalTest', 'vardecimal storage format', 1 */ /* -- Step 5: Estimate VarDecimal impact on database exec sys.sp_estimated_rowsize_reduction_for_vardecimal 'dbo.VarDecimalTest' */