SQL Server 2008 forDevelopershttp://johnsterrett.com/John Sterrett, @JohnSterrett
About Me!                                • Working with SQL Server                                  since 2006            ...
Topics to Cover….. •   Management Studio (SSMS) Enhancements •   T-SQL Delighters •   Filtered Indexes •   New Date and Ti...
Management Studio Enhancements •      IntelliSense •      Debugging •      Error List •      Object Explorer Details Viewe...
Transact-SQL Delighters • Declare and Initialize Variables • Compound assignment Operators • Table Value Constructor Suppo...
DEMO!!! Demo covering The following topics • IntelliSense • Debugging • Error Lists • Object Explorer Details • Template E...
Filtered Indexes! Have you ever wanted to create an index that filters between a static search criteria? CREATE INDEX idxN...
Filtered Indexes! • Improved query performance and plan quality if   used correctly! • Reduced index maintenance costs • R...
DEMO Filtered Indexes Demo….Session Code • Session Title
New Date & Time Types • SQL Server 2008 extends date/time support • Larger Value Space        –   Current DATETIME - 1753-...
Date and Time DATE Data Type • Date Only • 01-01-0001 to 31-12-9999 Gregorian Calendar TIME Data Type • Time Only • Variab...
DATETIME2 & DATETIMEOFFSET DATETIME2 Data Type • 01-01-0001 to 31-12-9999 Gregorian Calendar • Variable Precision - to 100...
DATETIMEOFFSET • SWITCHOFFSET (DATETIMEOFFSET,   time_zone)     •      Allows you to change time zones • SqlDbType.DateTim...
Demo!! T-SQL Date and Time DATETIMEOFFSET with .NETSession Code • Session Title
Table-Value Parameters Have you wished that you could send a table into a stored procedure? Do you wish you could send all...
Table Types SQL Server has table variables • DECLARE @t TABLE (id int); SQL Server 2008 adds strongly typed table variable...
Things to know about TVP ADO.NET 3.5 Supports Table Value Parameters You can populate TVP from the following .NET objects ...
TVP with .NET SqlParameter tvpParam = new SqlParameter();     tvpParam.ParameterName = "@TVP";     tvpParam.Value = dtList...
Demo!! Table-Value Parameters with T-SQL Table-Value Parameters with ASP.NET (C#)Session Code • Session Title
MERGE!!! TRUNCATE TABLE db1.dbo.fool INSERT INTO db1.dbo.fool SELECT * FROM db2.dbo.foolSession Code • Session Title
Merge Statement Multiple set operations in a single SQL statement Uses multiple sets as input • MERGE target USING source ...
More on MERGE Multiple WHEN clauses possible • For MATCHED and SOURCE NOT MATCHED • Only one WHEN clause for TARGET NOT MA...
MERGE Performance MERGE statement is transactional • No explicit transaction required One Pass Through Tables •   At most ...
DEMO!! Demo Merge with T-SQL!Session Code • Session Title
Central Management System (CMS) & Policy Based Management Have you ever wanted to run a script against all production data...
CMS and PBM • Central Management System     •      Needs only 1 instance of SQL 2008     •      Reactive not proactive    ...
Policy Based Management • Facets • Conditions • PoliciesSession Code • Session Title
DEMO! Demo monitoring and enforcing naming standards with Policy Based ManagementSession Code • Session Title
Change Data Capture Have you ever wanted to get row deltas on a table without using triggers on the source table?Session C...
Enable Change Data Capture • Must have Enterprise Edition • Uses transaction log to pull deltas • Enable on database (req ...
Change Data Capture data • Changes stored in cdc.schema_tablename_CT • _$operation column specifies change type     •     ...
Querying Change data • cdc.fn_cdc_get_all_changes<capture_instance>     •      gets all changes during specific range • cd...
SSIS with CDCSession Code • Session Title
DEMO! Enable and use Change Data CaptureSession Code • Session Title
How do you get started? Using the Transact-SQL Debugger SQL 2008 JumpStart MSDN – SQL 2008 Virtual Labs Developer Fundamen...
Thank youfor attending this session and the2010 PASS Summit in Seattle
Upcoming SlideShare
Loading in …5
×

SQL Server 2008 For Developers

1,646 views

Published on

The following is my slide deck from my session at the PASS Member Summit in 2010.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,646
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • http://technet.microsoft.com/en-us/library/cc280372.aspx
  • Datetime2 is the ansi compatible version as it has the correct accuracy and rangeDatetimeoffset stores datetime and an offset. It doesn’t store the actual timezone or anything about daylight saving time.The client session includes an app that stores the timezone.Both are variable precision, save space and increase performance by specifying the correct size.
  • SQL Server 2008 For Developers

    1. 1. SQL Server 2008 forDevelopershttp://johnsterrett.com/John Sterrett, @JohnSterrett
    2. 2. About Me! • Working with SQL Server since 2006 • Production DBA for 2 Years • Responsible for 50• Reside in Wheeling, Production instances with WV (Pittsburgh, PA) 1250 Databases• Syndicated Blogger • .NET Developer for 3 on SQLServerPedia Years• Writer for • Built a few Data Marts MSSQLTIPS.com Session Code • Session Title
    3. 3. Topics to Cover….. • Management Studio (SSMS) Enhancements • T-SQL Delighters • Filtered Indexes • New Date and Time Data Types • Table-Valued Parameters • MERGE statement • Policy Based Management • Change Data CaptureSession Code • Session Title
    4. 4. Management Studio Enhancements • IntelliSense • Debugging • Error List • Object Explorer Details Viewer • Template Explorer • Activity MonitorSession Code • Session Title
    5. 5. Transact-SQL Delighters • Declare and Initialize Variables • Compound assignment Operators • Table Value Constructor Support through the VALUES ClauseSession Code • Session Title
    6. 6. DEMO!!! Demo covering The following topics • IntelliSense • Debugging • Error Lists • Object Explorer Details • Template Explorer • Activity MonitorSession Code • Session Title
    7. 7. Filtered Indexes! Have you ever wanted to create an index that filters between a static search criteria? CREATE INDEX idxName ON Schema.Table (Column) WHERE ……Session Code • Session Title
    8. 8. Filtered Indexes! • Improved query performance and plan quality if used correctly! • Reduced index maintenance costs • Reduced index storage costsSession Code • Session Title
    9. 9. DEMO Filtered Indexes Demo….Session Code • Session Title
    10. 10. New Date & Time Types • 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 100 nanoseconds • Variable Precision Saves Space • Separate Date and Time Saves Space • ANSI CompatibleSession Code • Session Title
    11. 11. Date and Time 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 nanosecondsSession Code • Session Title
    12. 12. DATETIME2 & DATETIMEOFFSET 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 Time SupportSession Code • Session Title
    13. 13. DATETIMEOFFSET • SWITCHOFFSET (DATETIMEOFFSET, time_zone) • Allows you to change time zones • SqlDbType.DateTimeOffsetSession Code • Session Title
    14. 14. Demo!! T-SQL Date and Time DATETIMEOFFSET with .NETSession Code • Session Title
    15. 15. Table-Value Parameters Have you wished that you could send a table into a stored procedure? Do you wish you could send all parent-child relationship data in one round-trip?Session Code • Session Title
    16. 16. Table Types SQL Server has table variables • DECLARE @t TABLE (id int); SQL Server 2008 adds strongly typed table variables • CREATE TYPE mytab AS TABLE (id int); DECLARE @t mytab; Table-Value Parameters must use strongly typed table variablesSession Code • Session Title
    17. 17. Things to know about TVP ADO.NET 3.5 Supports Table Value Parameters You can populate TVP from the following .NET objects • DataTable • DbDataReader • System.Collections.Generic.IList <SQLDataRecord> Recommended for 1000 or less recordsSession Code • Session Title
    18. 18. TVP with .NET SqlParameter tvpParam = new SqlParameter(); tvpParam.ParameterName = "@TVP"; tvpParam.Value = dtList; //DataTable in this example tvpParam.SqlDbType = SqlDbType.Structured; // This data type allows us to pass a table into DB Objects tvpParam.TypeName = "TVPComponentType"; // Name of strong typed (table type)Session Code • Session Title
    19. 19. Demo!! Table-Value Parameters with T-SQL Table-Value Parameters with ASP.NET (C#)Session Code • Session Title
    20. 20. MERGE!!! TRUNCATE TABLE db1.dbo.fool INSERT INTO db1.dbo.fool SELECT * FROM db2.dbo.foolSession Code • Session Title
    21. 21. Merge Statement Multiple set operations in a single SQL statement 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 extensionsSession Code • Session Title
    22. 22. More on MERGE 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 be fired once Rows affected includes total rows affected by all clausesSession Code • Session Title
    23. 23. MERGE Performance 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 matchedSession Code • Session Title
    24. 24. DEMO!! Demo Merge with T-SQL!Session Code • Session Title
    25. 25. Central Management System (CMS) & Policy Based Management Have you ever wanted to run a script against all production databases? Have you ever wanted to enforce naming conventions in SQL Programming?Session Code • Session Title
    26. 26. CMS and PBM • Central Management System • Needs only 1 instance of SQL 2008 • Reactive not proactive • great tool for updating objects on multiple servers • Policy Based Management • proactive tool prevents stuff from happening • great tool to enforce compliance on SQL 2008+ serversSession Code • Session Title
    27. 27. Policy Based Management • Facets • Conditions • PoliciesSession Code • Session Title
    28. 28. DEMO! Demo monitoring and enforcing naming standards with Policy Based ManagementSession Code • Session Title
    29. 29. Change Data Capture Have you ever wanted to get row deltas on a table without using triggers on the source table?Session Code • Session Title
    30. 30. Enable Change Data Capture • 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_CTSession Code • Session Title
    31. 31. Change Data Capture data • Changes stored in cdc.schema_tablename_CT • _$operation column specifies change type • 1 = DELETE • 2 = INSERT • 3 = BEFORE UPDATE • 4 = AFTER UPDATESession Code • Session Title
    32. 32. Querying Change data • 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 the specific rangeSession Code • Session Title
    33. 33. SSIS with CDCSession Code • Session Title
    34. 34. DEMO! Enable and use Change Data CaptureSession Code • Session Title
    35. 35. How do you get started? Using the Transact-SQL Debugger SQL 2008 JumpStart MSDN – SQL 2008 Virtual Labs Developer Fundamentals Part 1: Uncovering T-SQL on SQL Server 2008Session Code • Session Title
    36. 36. Thank youfor attending this session and the2010 PASS Summit in Seattle

    ×