Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SQL Server 2008 For Developers

1,682 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×