SSIS 2012: A Deep Dive into the SSIS Catalog Phil Brammer @PhilBrammer ssistalk.com Phil Brammer • Over 12 years’ experience in database technologies, data warehousing, ETL, on-call… • Started on Red Brick Data Warehouse. Ralph Kimball’s product. • Worked with Teradata at PayPal • Operationally manages multi-terabyte instances • Dabbles a bit in SSIS – ssistalk.com • Microsoft MVP, SQL Server – 6th year SSIS Pre-SQL 2012 • Born in 2005 as a replacement for DTS • Groans or applause? • Client focused SSIS in SQL Server 2012 • • • • • Server Focused! Minimal, but juicy changes in the client Cluster aware. Sort of. DTS is no longer supported. Visual Studio 2010 integration SSIS Project Overview • • • • • Project-based deployments Parameters Environments Connections Legacy, but not DTS SSIS Projects • • • • • Project versioning Limited by server configuration option Can restore to a previous version Can only export current version with the GUI The number of available project versions depends on the server configuration setting SSIS Catalog Execution • ISServerExec.exe – Program Files\Microsoft SQL Server\110\DTS\Binn – External host for SSIS package operations such as deployment, validation, and execution – Opens its own Named Pipe • ISSERVER Assembly (UNSAFE) – Microsoft.SqlServer.IntegrationServices.Server.dll – SQLCLR stored procedures/functions • Call ISServerExec • Use IPC to exchange information to ISServerExec SSIS Catalog Execution • SQLCLR Stored Procedures/Functions communicate via IPC over named pipes to/from ISServerExec • ISServerExec uses a SqlConnection to write logging events back to the SSIS catalog • Examples: – Start Execution • catalog.start_execution – Create Execution Dump • catalog.create_execution_dump – Return performance counter data • catalog.dm_execution_performance_counters ISServerExec Execution Flow catalog.create_execution catalog.stop_operation Created (1) Pending (5) Running (2) Stopping (8) Canceled (3) ISServerExec Unexpected Crash catalog.start_execution Success (7) Completed (9) Failed (4) Unexpected Termination / Crash (6) SSIS Catalog Objects • • • • • • • • 1 Assembly 1 SQL Server Agent Job 2 Logins 16 User-Defined Functions 17 User-Defined Types 30 Tables 33 Views 94 Stored Procedures • “internal” and “catalog” schemas SSIS Catalog Security • Objects are encrypted with database master key – Back it up, save the password! • All projects and sensitive parameter values are stored encrypted. (AES_256; modifiable) – Encrypted with symmetric key and certificate • Certificates and keys are created for each project/execution/environment object • Sensitive parameters are not set after deployment. You must configure the project/package accordingly once deployed. SSIS Catalog Security • Row-level security (folders, projects, environments, operations/executions) • ssis_admin & sysadmin roles can access all securables • catalog.explicit_object_permissions shows object permissions that have been set for a user • catalog.effective_object_permissions shows object permissions that are in effect recursively SSIS Catalog Logging • Can set a server-wide logging level • Four levels: None, Basic, Performance, Verbose • Basic logging captures most log events- OnError, OnWarning, OnInformation, OnPre/PostValidate, OnPre/PostExecute • Performance logging captures OnError, OnWarning, and great performance data – data flow component execution timings • Verbose logging captures everything, including row counts transferred. SSIS Catalog Logging • Logging can be extended with 3rd party products or by using the existing framework • Custom log events are only captured in the verbose logging level • Script Tasks can log via the FireXXXXXX method (FireInformation, FireError, etc…) • New DiagnosticEx event under verbose logging captures parameter information passed down to child packages SSIS Data Taps • Two procedures: – catalog.add_data_tap – catalog.add_data_tap_by_guid • A SQL-based data viewer • With verbose logging, no need to open up package • Insert data tap to investigate issues • Can only store files in <SQLInstallDir>\110\DTS\DataDumps • CSV format SSIS Performance Monitoring • One DMV – catalog.dm_execution_performance_counters • DMV asks ISServerExec for an execution’s statistics (or all executions if NULL is used) • ISServerExec passes the information back via named pipe SSIS Dump Files • One procedure: – catalog.create_execution_dump • Create an execution dump on the fly for use with CSS or other support activities • Stored in <SQLInstallDir>\110\Shared\ErrorDumps • Creates .mdmp and .tmp debug files • Can also set parameters to cause dumps – DUMP_ON_EVENT – DUMP_EVENT_CODE – DUMP_ON_ERROR SSIS Dump Files • To see prior event codes from an execution, select from catalog.event_messages, casting message_code to BINARY(4) • Take converted message_code and set DUMP_EVENT_CODE to trigger dump file creation SSIS Catalog Maintenance • One SQL Agent Job - SSIS Server Maintenance Job • Two stored procedures – internal.cleanup_server_project_version – internal.cleanup_server_retention_window • One database user ##MS_SSISServerCleanupJobUser## • Above user is allowed to execute the above two procedures and is the job owner SSIS Catalog Maintenance • The Server Maintenance Job purges all of the catalog tables based on retention windows – properties of the SSIS Catalog • Relies on cascade deletes. Job simply deletes from parent tables in batches of 10 records. • Causes extreme blocking on busy systems and can result in canceled package executions • SQL 2012 SP1 should alleviate the canceled execution problem by better handling blocking scenarios SSIS Catalog and AlwaysOn • SSISDB is supported in an AlwaysOn setup • Remove SSISDB from the availability group before patching • Remember that SSISDB’s master key is encrypted with the service master key, which is tied to the machine hosting SSISDB. • On failover you will get an encryption error • Can correct manually, or use a SQL Agent job to open the master key Questions • Questions and comments Resources • http://msdn.microsoft.com/enus/library/hh479588.aspx • http://blogs.msdn.com/b/mattm/archive/2012/0 9/19/ssis-with-alwayson.aspx • http://msdn.microsoft.com/enus/library/hh213291.aspx • http://sqlblog.com/blogs/jamie_thomson/archive /2011/07/16/ssis-logging-in-denali.aspx End • • • • Thank you for attending! Phil Brammer @PhilBrammer http://www.ssistalk.com