NewFeaturesinSQLServer2008•Chapter1 7
The T-SQL procedure to do a Copy Only Backup would look like:
BACKUP DATABASE [robby] TO DISK = N'C:\Backup\robby.bak' WITH COPY_ONLY,
NOFORMAT, NOINIT, NAME = N'robby-Full Database Backup', SKIP, NOREWIND,
NOUNLOAD, STATS = 10
GO
Figure 1.3 The Copy Only Backup Option
Te s T Da y Ti p
Be sure you are very familiar with doing backups and restores both from
a T-SQL standpoint and a GUI standpoint. Since this is the bread and
butter of a DBA’s job, you can be sure there will be plenty of questions
about backups, restores, and recovery.
8 Chapter1•NewFeaturesinSQLServer2008
Enhanced Configuration
and Management of Audits
Auditing is available using the new Change Data Capture (CDC) feature. CDC can
be used to capture insertions, updates, and deletes in an SQL table in a database and
place the changes in another table.
The following SQL code demonstrates how to configure CDC for auditing of
a table in a database:
Activate CDC
EXEC sys.sp_cdc_enable_db_change_data_capture
Enable CDC on table
EXEC sys.sp_cdc_enable_table_change_data_capture @source_schema = 'dbo',
@source_name = 'myTable', @role_name = 'cdc'
To read the data from the CDC table, there are a series of system stored procedures
and functions available, or you can query the tables directly.
System stored procedures:
sys.sp_cdc_add_ job
sys.sp_cdc_generate_wrapper_function
sys.sp_cdc_change_ job
sys.sp_cdc_get_captured_columns
sys.sp_cdc_cleanup_change_table
sys.sp_cdc_get_ddl_history
sys.sp_cdc_disable_db
sys.sp_cdc_help_change_data_capture
sys.sp_cdc_disable_table
sys.sp_cdc_help_ jobs
sys.sp_cdc_drop_ job
sys.sp_cdc_scan
sys.sp_cdc_enable_db
sys.sp_cdc_start_ job
sys.sp_cdc_enable_table
sys.sp_cdc_stop_ job
NewFeaturesinSQLServer2008•Chapter1 9
System functions:
cdc.fn_cdc_get_all_changes_<capture_instance>
sys.fn_cdc_has_column_changed
cdc.fn_cdc_get_net_changes_<capture_instance>
sys.fn_cdc_increment_lsn
sys.fn_cdc_decrement_lsn
sys.fn_cdc_is_bit_set
sys.fn_cdc_get_column_ordinal
sys.fn_cdc_map_lsn_to_time
sys.fn_cdc_get_max_lsn
sys.fn_cdc_map_time_to_lsn
sys.fn_cdc_get_min_lsn
Te s T Da y Ti p
You can count on questions about Change Data Capture on your exam.
This new feature makes tracking down changes and auditing much
easier than it has been in the past.
New Table Value Parameter
Passing tables as parameters has been a long time coming. The new table type can
be passed to a stored procedure. This will solve quite a few problems!
Here’s an example:
To declare a Table User Defined Type in the database:
create type MyTableType as table
(
Name varchar(150),
City varchar(20),
AddressID int
)
And here's the stored procedure that consumes it:
create procedure InsertFriends
10 Chapter1•NewFeaturesinSQLServer2008
(
@MyTable MyTableType readonly
)
as
insert
into Friends (Name, city, AddressID)
select Name, city, AddressID
from @MyTable;
To fill create and fill the temp table:
declare @MyBestFriends_temp MyTableType
insert into @MyBestFriends_temp values ('Debbie', 'Havertown', 2)
insert into @MyBestFriends_temp values ('Chris', 'Philadelphia', 1)
insert into @MyBestFriends_temp values ('Tom', 'Garden City', 11)
insert into @MyBestFriends_temp values ('Greg', 'Lansdowne', 6)
insert into @MyBestFriends_temp values ('Steve', 'Wilmington', 6)
And finally, to execute:
execute InsertFriends @MyBestFriends_temp
FileStream Data Types
FileStream data types are a new, interesting feature in SQL SERVER 2008. Basically,
the database engine will store all of the data associated with the column in a disk
file as opposed to the actual database. You might have used a similar home-grown
scheme in earlier versions of SQL, but this integrates everything nicely into
SQL Server.
In order to use FileStream, you must first enable it. This is accomplished via the
sp_FILESTREAM_configure system stored procedure, or via the GUI in
Management Studio under advanced settings.
Once FileStream is enabled, a file group must be added to the database in order
for it to be able to use FileStream data types.
FileStream has the following limitations:
Database mirroring cannot be configured in databases with FileStream data.
Database snapshots are not supported for FileStream data.
Native encryption is not possible by SQL Server for FileStream data.
ex a m Wa r n i n g
Be sure you remember the limitations of FileStream data types!
NewFeaturesinSQLServer2008•Chapter1 11
Sparse Column Support
Sparse columns are a new addition to SQL Server. Sparse columns allow for the
optimized storage of null columns. Sparse columns can be a good thing, but be sure to
enable them only on columns that contain sparse data, or your storage requirements
may go up instead of down.
To enable a column as a sparse column, use the create statement in SQL or
change the properties in the column to Sparse (see Figure 1.4).
Figure 1.4 Enabling a Column as a Sparse Column
The SQL to accomplish this is as follows:
CREATE TABLE dbo.Table_1
(
OID int NULL,
MyValue1 varchar(50) SPARSE NULL
) ON [PRIMARY]
GO