INTEGRATION SERVICES IN THE REAL WORLD Brian Garraty, Database Administrator Virginia Beach City Public Schools.

Download Report

Transcript INTEGRATION SERVICES IN THE REAL WORLD Brian Garraty, Database Administrator Virginia Beach City Public Schools.

INTEGRATION SERVICES IN
THE REAL WORLD
Brian Garraty, Database Administrator
Virginia Beach City Public Schools
Who I Am




DBA for Virginia Beach City Public Schools
10 years working with SQL Server
5 years working with SSIS
MCITP: DBA
Integration Services in the Real World, Brian Garraty
Who You Are





DBAs?
Developers?
DBAs with Development Background?
SSIS experience? DTS experience?
SSIS fans? SSIS haters?
Integration Services in the Real World, Brian Garraty
Itinerary





Introduction
Real World SSIS Case Studies
Wrap Up
Q&A
Resources
Integration Services in the Real World, Brian Garraty
“You sure are a great cook!
Can you farm?” –Mitch Hedberg
Integration Services in the Real World, Brian Garraty
What SSIS Buys Me





Flexibility
Performance
Rapid development
Dependability
Security
Integration Services in the Real World, Brian Garraty
SSIS Rather Than…





xp_cmdshell
bcp/BULK INSERT
osql/SQLCMD
Linked Servers
Stand-alone .NET Projects
Integration Services in the Real World, Brian Garraty
How I Learned




Read “Paradigm Shift” article
Rewrote monster, unwieldy stored procedure
True user documentation (blogs)
Rewrote first SSIS project
Integration Services in the Real World, Brian Garraty
“Since SSIS has been my hammer,
A lot of problems have started looking like
nails.” – Me
Integration Services in the Real World, Brian Garraty
Case Study #1
Storing Snapshot of Active Directory in SQL
Server Tables
Integration Services in the Real World, Brian Garraty
AD Snapshot: Requirements

Query Active Directory for:
 User
Accounts
 Groups
 Group Memberships


QA the results
Load data into SQL Server tables
Integration Services in the Real World, Brian Garraty
AD Snapshot: Linked Server Approach




Create linked server to ADSI
Query linked server to temp tables
QA temp tables (2nd iteration)
Replace data in destination tables from temp table
Integration Services in the Real World, Brian Garraty
AD Snapshot: Linked Server Problems




Partial results (limited to 2000 results)
Timeouts without error message
“An error occurred” Errors
Not Configurable
Integration Services in the Real World, Brian Garraty
AD Snapshot: SSIS Approach

Script tasks in Control Flow
 Query
AD via DirectoryServices.DirectorySearcher
 Stage results in XML

QA
 Execute
SQL Task for row counts
 Script task to check threshold and throw error
Integration Services in the Real World, Brian Garraty
AD Snapshot: SSIS Approach (con’t)


Expression Precedence Constraint
For each item
 Truncate
via Execute SQL Task
 Data Flow Task loads table from XML
Integration Services in the Real World, Brian Garraty
Case Study #2
Index Defragmentation
Integration Services in the Real World, Brian Garraty
Index Defrag: Requirements




Targeted defragmentation
Configurable thresholds
Support for 2005 syntax and features
Report-only mode
Integration Services in the Real World, Brian Garraty
Index Defrag: Without SSIS

Many choices
 Powershell
 Stored
procedure
 SMO

Valid options - No problems slide here
Integration Services in the Real World, Brian Garraty
Index Defrag: SSIS Approach



Generic SSIS package – can run on any server
Store thresholds in configuration
ForEach with SMO to loop dbs
Integration Services in the Real World, Brian Garraty
Index Defrag: SSIS (con’t)

Dynamic SQL to query indexes
 sys.dm_db_index_physical_stats
 sys.dm_db_index_usage_stats


ForEach with NodeList to loop indexes
Script Task to build defrag statement
Integration Services in the Real World, Brian Garraty
Other Projects

Monster Stored Procedure

Queries by Committee

Rendered Report Compare

Nightly Data Extracts via Secure-FTP
Integration Services in the Real World, Brian Garraty
Wrap Up
Integration Services in the Real World, Brian Garraty
Praise for SSIS




Parallelism
Expressions
Configurations
.NET
Integration Services in the Real World, Brian Garraty
Praise for SSIS (con’t)




Debugging
Data Viewers
Logging
Security
 No
linked servers
 Not necessarily dependent on SQL Service Account
Integration Services in the Real World, Brian Garraty
Gripes: Dark Side of SSIS




GUI intensive
Visual Studio outside DBA comfort zone
Requires .NET Skills Helpful
What you see != What you get
 Expressions
 Configurations
Integration Services in the Real World, Brian Garraty
Gripes: Dark Side of SSIS (con’t)




Source Control Integration
Expressions – Syntax and Editor
Copy/Paste and ID’s
Sorting – DB vs. SSIS
Integration Services in the Real World, Brian Garraty
My* Top 10 Tips and Best Practices
1.
2.
3.
4.
5.
Store packages as files - always
ROOT_FOLDER and common directory structure
Naming Conventions - Project, Package, and Task
Use indirect configurations
Break project into multiple packages
Integration Services in the Real World, Brian Garraty
My* Top 10 Tips and Best Practices
6.
7.
8.
9.
10.
Do not sort in T-SQL
Use logging – expression can timestamp file name
Learn to use ForEach container with NodeList
Use CmdExec steps in SQL Agent with Proxy
Accounts to run packages
Create separate SSMS solution to manage source
control of all T-SQL code
Integration Services in the Real World, Brian Garraty
Questions and Answers?
Integration Services in the Real World, Brian Garraty
Resources

Jamie Thomson’s old blog (now on SQLBLOG)
 http://bit.ly/5BeYDh

Paradigm Shift Article on SSC
 http://bit.ly/5nMIks

SQL Lunch
 http://sqllunch.com

My Blog
 http://NULLgarity.wordpress.com

#SSISHELP
Integration Services in the Real World, Brian Garraty
Thanks!
Brian Garraty
twitter.com/@NULLgarity
NULLgarity.wordpress.com
[email protected]
Integration Services in the Real World, Brian Garraty