-- Delete target files from previous tests
EXECUTE sp_configure 'show advanced options', 1; RECONFIGURE;
EXECUTE sp_configure 'xp_cmdshell', 1; RECONFIGURE;
EXEC xp_cmdshell 'DEL C:\SQLskills\MultipleDataFiles*';
EXECUTE sp_configure 'xp_cmdshell', 0; RECONFIGURE;
EXECUTE sp_configure 'show advanced options', 0; RECONFIGURE;
-- Drop the test database from the server
USE [master]
GO
IF DB_ID('MultipleDataFiles') IS NOT NULL
BEGIN
ALTER DATABASE [MultipleDataFiles] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [MultipleDataFiles];
END
GO
-- Create a single-file database
CREATE DATABASE [MultipleDataFiles] ON PRIMARY
( NAME = N'MultipleDataFiles',
FILENAME = N'H:\SQLData\MultipleDataFiles.mdf' ,
SIZE = 32768KB ,
FILEGROWTH = 32768KB ),
FILEGROUP [UserObjects]
( NAME = N'MultipleDataFiles_UserObjects1',
FILENAME = N'H:\SQLData\MultipleDataFiles_UserObjects1.ndf' ,
SIZE = 32768KB ,
FILEGROWTH = 32768KB )
LOG ON
( NAME = N'MultipleDataFiles_log',
FILENAME = N'L:\SQLLogs\MultipleDataFiles_log.ldf' ,
SIZE = 131072KB ,
FILEGROWTH = 32768KB )
GO
ALTER DATABASE [MultipleDataFiles]
MODIFY FILEGROUP [UserObjects] DEFAULT
GO
-- Create a table to load data into for the tests
USE [MultipleDataFiles]
GO
CREATE TABLE [dbo].[SalesOrderHeader](
[SalesOrderID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[RevisionNumber] [tinyint] NOT NULL,
[OrderDate] [datetime] NOT NULL,
[DueDate] [datetime] NOT NULL,
[ShipDate] [datetime] NULL,
[Status] [tinyint] NOT NULL,
[OnlineOrderFlag] [bit] NOT NULL,
[SalesOrderNumber] [nvarchar](25) NOT NULL,
[PurchaseOrderNumber] [nvarchar](25) NULL,
[AccountNumber] [nvarchar](15) NULL,
[CustomerID] [int] NOT NULL,
[SalesPersonID] [int] NULL,
[TerritoryID] [int] NULL,
[BillToAddressID] [int] NOT NULL,
[ShipToAddressID] [int] NOT NULL,
[ShipMethodID] [int] NOT NULL,
[CreditCardID] [int] NULL,
[CreditCardApprovalCode] [varchar](15) NULL,
[CurrencyRateID] [int] NULL,
[SubTotal] [money] NOT NULL,
[TaxAmt] [money] NOT NULL,
[Freight] [money] NOT NULL,
[TotalDue] [money] NOT NULL,
[Comment] [nvarchar](128) NULL,
[rowguid] [uniqueidentifier] NOT NULL,
[ModifiedDate] [datetime] NOT NULL
)
GO
-- Load ~31MB of data into the test database
INSERT INTO dbo.SalesOrderHeader
SELECT RevisionNumber,
DATEADD(DD, 1126+number, OrderDate),
DATEADD(DD, 1126+number, DueDate),
DATEADD(DD, 1126+number, ShipDate),
soh.Status, OnlineOrderFlag, SalesOrderNumber,
PurchaseOrderNumber, AccountNumber,
CustomerID, SalesPersonID, TerritoryID,
BillToAddressID, ShipToAddressID,
ShipMethodID, CreditCardID, CreditCardApprovalCode,
CurrencyRateID, SubTotal, TaxAmt, Freight,
TotalDue, Comment, rowguid,
DATEADD(DD, 1126+number, ModifiedDate)
FROM AdventureWorks2008R2.Sales.SalesOrderHeader AS soh
CROSS JOIN master.dbo.spt_values AS sv
WHERE sv.type = N'P'
AND sv.number > 0 AND sv.number < 6
-- Grow the first data file to 63MB leaving 32MB free space
ALTER DATABASE [MultipleDataFiles]
MODIFY FILE ( NAME = N'MultipleDataFiles_UserObjects1',
SIZE = 64512KB )
GO
-- Add second file with 32MB size
ALTER DATABASE [MultipleDataFiles]
ADD FILE ( NAME = N'MultipleDataFiles_UserObjects2',
FILENAME = N'H:\SQLData\MultipleDataFiles_UserObjects2.ndf' ,
SIZE = 32768KB ,
FILEGROWTH = 32768KB )
TO FILEGROUP [UserObjects]
GO
-- Add third file with 32MB size
ALTER DATABASE [MultipleDataFiles]
ADD FILE ( NAME = N'MultipleDataFiles_UserObjects3',
FILENAME = N'H:\SQLData\MultipleDataFiles_UserObjects3.ndf' ,
SIZE = 32768KB ,
FILEGROWTH = 32768KB )
TO FILEGROUP [UserObjects]
GO
-- Add fourth file with 32MB size
ALTER DATABASE [MultipleDataFiles]
ADD FILE ( NAME = N'MultipleDataFiles_UserObjects4',
FILENAME = N'H:\SQLData\MultipleDataFiles_UserObjects4.ndf' ,
SIZE = 32768KB ,
FILEGROWTH = 32768KB )
TO FILEGROUP [UserObjects]
GO