twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time...
Transcript of twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time...
![Page 1: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/1.jpg)
twitter: @JohnSterrett
blog: http://johnsterrett.com
Presented By: John Sterrett
![Page 2: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/2.jpg)
I am not an expert but I stayed at a HolidayInn Express….
I reside in Wheeling, WV (Pittsburgh, PA)◦ Recently started Wheeling SQL Server UG
◦ Co-Host SQL Saturday #36 in Wheeling, WV
Work for Orrick Herrington & Sutcliffe LLP◦ Responsible 100+ Instances of SQL Server
◦ Responsible for PeopleSoft
![Page 3: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/3.jpg)
Give an introduction to new features.
Give real-world cases for using new features.
This is an introduction, NOT a deep dive.
![Page 4: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/4.jpg)
◦ Management Studio (SSMS) Enhancements
◦ T-SQL Delighters
◦ Filtered Indexes
◦ New Date and Time Data Types
◦ Table-Valued Parameters
◦ MERGE statement
◦ Policy Based Management and Central ManagementServer
◦ Change Data Capture
![Page 5: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/5.jpg)
• IntelliSense
• Debugging
• Error List
• Object Explorer Details Viewer
• Template Explorer (SQL 2005)
• Activity Monitor
![Page 6: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/6.jpg)
• Declare and Initialize Variables
• Compound assignment Operators
• Table Value Constructor Support through theVALUES Clause
![Page 7: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/7.jpg)
Demo covering The following topics
• IntelliSense
• Debugging
• Error Lists
• Object Explorer Details
• Template Explorer
• Activity Monitor
![Page 8: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/8.jpg)
Have you ever wanted to create an index thatfilters between a static search criteria?
CREATE INDEX idxName ON Schema.Table(Column) WHERE ……
![Page 9: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/9.jpg)
• Improved query performance and planquality if used correctly!
• Reduced index maintenance costs
• Reduced index storage costs
![Page 10: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/10.jpg)
Filtered Indexes Demo….
![Page 11: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/11.jpg)
• SQL Server 2008 extends date/time support
• Larger Value Space– Current DATETIME - 1753-9999 Years
– Current DATETIME - 0.00333 Second Accuracy
– New Date Types - 0001-9999 Years
– New Date/Time Types - Precisions to 100nanoseconds
• Variable Precision Saves Space
• Separate Date and Time Saves Space
• ANSI Compatible
![Page 12: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/12.jpg)
DATE Data Type◦ Date Only◦ 01-01-0001 to 31-12-9999 Gregorian Calendar
TIME Data Type◦ Time Only◦ Variable Precision - 0 to 7 decimal places for
seconds◦ To 100 nanoseconds
![Page 13: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/13.jpg)
DATETIME2 Data Type◦ 01-01-0001 to 31-12-9999 Gregorian Calendar
◦ Variable Precision - to 100 nanoseconds
DATETIMEOFFSET◦ 01-01-0001 to 31-12-9999 Gregorian Calendar
◦ Variable Precision - to 100 nanoseconds
◦ Time Zone Offset (From UTCTime) Preserved
◦ Not Time Zone Aware - No Daylight Saving TimeSupport
![Page 14: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/14.jpg)
• SWITCHOFFSET (DATETIMEOFFSET,time_zone)
• Allows you to change time zones (+14 to -14)
• Uses Gregorian Calendar
• SqlDbType.DateTimeOffset
![Page 15: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/15.jpg)
T-SQL Date and Time
DATETIMEOFFSET with .NET
![Page 16: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/16.jpg)
Have you wished that you could send a tableinto a stored procedure?
Do you wish you could send all parent-childrelationship data in one round-trip?
![Page 17: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/17.jpg)
SQL Server has table variables◦ DECLARE @t TABLE (id int);
SQL Server 2008 adds strongly typed tablevariables◦ CREATE TYPE mytab AS TABLE (id int);
DECLARE @t mytab;
Table-Value Parameters must use stronglytyped table variables
![Page 18: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/18.jpg)
ADO.NET 3.5 Supports Table ValueParameters
You can populate TVP from the following.NET objects◦ DataTable
◦ DbDataReader
◦ System.Collections.Generic.IList <SQLDataRecord>
Recommended for 1000 or less records
![Page 19: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/19.jpg)
SqlParameter tvpParam = new SqlParameter();
tvpParam.ParameterName = "@TVP";
tvpParam.Value = dtList; //DataTable in this example
tvpParam.SqlDbType = SqlDbType.Structured; // This data type allowsus to pass a table into DB Objects
tvpParam.TypeName = "TVPComponentType"; // Name of strongtyped (table type)
![Page 20: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/20.jpg)
Table-Value Parameters with T-SQL
Table-Value Parameters with ASP.NET (C#)
![Page 21: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/21.jpg)
Once upon a time I use to build scripts likethe following:
TRUNCATE TABLE db1.dbo.fool
INSERT INTO db1.dbo.foolSELECT * FROM db2.dbo.fool
![Page 22: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/22.jpg)
![Page 23: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/23.jpg)
Multiple set operations in a single SQLstatement
Uses multiple sets as input◦ MERGE target USING source ON ...
Operations can be INSERT, UPDATE, DELETE Operations based on◦ WHEN MATCHED◦ WHEN [TARGET] NOT MATCHED◦ WHEN SOURCE NOT MATCHED
ANSI SQL 2006 compliant - with extensions
![Page 24: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/24.jpg)
Multiple WHEN clauses possible◦ For MATCHED and SOURCE NOT MATCHED
◦ Only one WHEN clause for TARGET NOT MATCHED
MERGE can be used with any table source
A MERGE statement causes triggers to befired once
Rows affected includes total rows affected byall clauses
![Page 25: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/25.jpg)
MERGE statement is transactional◦ No explicit transaction required
One Pass Through Tables◦ At most a full outer join◦ Matching rows = when matched◦ Left-outer join rows = when target not matched◦ Right-outer join rows = when source not matched
![Page 26: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/26.jpg)
Demo Merge with T-SQL!
![Page 27: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/27.jpg)
Have you ever wanted to run a script againstall production databases?
Have you ever wanted to enforce namingconventions in SQL Programming?
![Page 28: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/28.jpg)
• Central Management System• Needs only 1 instance of SQL 2008
• Reactive not proactive
• great tool for running a script against multipleservers
• Policy Based Management• proactive tool prevents stuff from happening
• great tool to enforce compliance on SQL 2008+servers
![Page 29: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/29.jpg)
• Facets
• Conditions
• Policies
![Page 30: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/30.jpg)
Demo monitoring and enforcing namingstandards with Policy Based Management
![Page 31: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/31.jpg)
Have you ever wanted to get row deltas on atable without using replication or triggers onthe source table?
![Page 32: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/32.jpg)
• Must have Enterprise Edition
• Uses transaction log to pull deltas
• Enable on database (req sysadmin)• sys.sp_cdc_enable_db_change_data_capture
• creates cdc schema
• creates cdc user
• creates system tables with cdc schema
• Enable on table(s) (req db_owner)• sys.sp_cdc_enable_table
• creates sql agent jobs
• creates table cdc.schema_tablename_CT
![Page 33: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/33.jpg)
• Changes stored incdc.schema_tablename_CT
• _$operation column specifies change type• 1 = DELETE
• 2 = INSERT
• 3 = BEFORE UPDATE
• 4 = AFTER UPDATE
![Page 34: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/34.jpg)
• cdc.fn_cdc_get_all_changes<capture_instance>
• gets all changes during specific range
• cdc.fn_cdc_get_net_changes<capture_instance>
• returns final (net change) for each row in thespecific range
![Page 35: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/35.jpg)
![Page 36: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/36.jpg)
Enable and use Change Data Capture
![Page 37: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/37.jpg)
Using the Transact-SQL Debugger
SQL 2008 JumpStart
MSDN – SQL 2008 Virtual Labs
Developer Fundamentals Part 1: UncoveringT-SQL on SQL Server 2008
![Page 38: twitter: @JohnSterrett blog: ://Filtered Indexes Demo…. • SQL Server 2008 extends date/time support • Larger Value Space – Current DATETIME - 1753-9999 Years – Current DATETIME](https://reader033.fdocuments.in/reader033/viewer/2022052814/609f87920ae5894dda199a6f/html5/thumbnails/38.jpg)
Presented By: John Sterrett
◦ Twitter: @JohnSterrett
◦ Blog: http://johnsterrett.com
◦ LinkedIn: http://linkedin.com/johnsterrett