SlideShare a Scribd company logo
Get a Lever and Pick Any Turtle:Lifting with Metadata Cade Roux cade@roux.org
Give me the place to stand, and I shall move the earth.
Start Simple
Scalethe Technique
Use Basic Concepts
Expand to Systems
Mixing Metaphors – We’re Going Down a Rabbit Hole Pam: And then outta that cake pops another stripper holding a smaller cake and then an even smaller stripper pops outta that one. Michael: What is that smaller stripper holding? Pam: A cupcake! It's cupcakes and strippers all the way down.
Avoid Injury
Metadata has always been there Codd Rule #0: The RDBMS must use the relational facilities to manage the database
Metadata has always been there Codd Rule #4: There must be an active online catalog based on the relational model
DBMeta DBHealth Demo
Tables Views SPs
SQL Server Basic Metadata Services INFORMATION_SCHEMA contains tables and views (ANSI 92, kind of generic RDBMS model, doesn’t expose a lot of implementation details) sys schema contains tables and views (more proprietary, particularly non-portable things like indexing features)
SQL Server Extended Properties You could make tables of additional information about database objects DON’T Built-in extended properties work great for this! MS_Description: Microsoft’s standard “description” property sp_addextendedproperty, sp_updateextendedproperty, sp_dropextendedproperty fn_listextendedproperty sys.extended_properties I’ll improve this in the DBMeta schema
DBMeta.Properties Layer this view on top of sys.extended_propertiesto: Make it easier to use Give a standard naming convention Easier than CROSS APPLY fn_listextendedproperty
DBMeta.AddXP, UpdateXP, DropXP Easier to use than sp_addextendedproperty, sp_updateextendedproperty, sp_dropextendedproperty The builtinprocs have some awkward hierarchy aspects: e.g. a column or trigger is defined at level 2 where the table is level 1
DBMeta With some simple tools we now have an easier way of dealing with the metadata in the extended properties This can be expanded at will to join regular base metadata information, PIVOT with the property information and combine them in interesting ways For instance, say your question was “I want to see NULLability (base metadata) of all money (base metadata) columns in tables in the Accounts subsystem (extended property) which have not been marked as reviewed. (extended property)” You can do that.
DBHealth Some questions about the health of the database system will be very standard By health, I mean outside of integrity you can realistically enforce with constraints and beyond what you might use DDL triggers for Can we use the metadata to do something generally useful? Can we organize the health system using metadata so that it is self-maintaining as much a possible?
Demo Data Let’s create some data structures in our Demo schema – some tables and indexes
Let’s Make Up Some DBA Rules Arbitrary, but useful and chosen for variety Rule #1: All tables should be identified with a SUBSYSTEM (Organizational Rule) Rule #2: No unique indexes with columns which allow NULLs (Indexing Rule) Rule #3: No varchar(N) columns where N <= 2 (Table Design Rule) Rule #0: We only want to enforce these on schemas under management
Rule #0 We simply make a view DBHealth.MonitoredSchemas We’ll need to remember to use this view You could make a whole layer of views which filter through this, of course
Rule #1 Look for tables without extended property ‘SUBSYSTEM’
Rule #2 Look for unique indexes where any of the columns in the index are NULLable.
Rule #3 Find all varchar/nvarchar columns with length <= 2
What about exclusions? Let’s tag things for exclusion with extended properties!
Now we have a bunch of rules How do we organize them? Could we put them in individual views or procedures to make them easy to use? Then make a master procedure which runs them all. But we’d need to make a list of all the procedures But what did we say? Let’s use the metadata to tag the procedures! We’ll mark the procedures We’ll categorize the procedures We’ll be able to look for all the marked procedures and run them in an automated fashion – no new tables, limited maintenance!
Ideas For Rules All procs in DBHealth should have HEALTH_CHECK_PROC and HEALTH_CHECK_SET properties Show me any unindexed tables (heap tables with no non-clustered indexes) Show me any items tagged with a ‘TODO’ extended property Show me all columns in the database which aren’t actually used (yes, you can do this!)
Let’s use this from a client Health Monitoring .NET Code Generation T-SQL T4
Contact Email: cade@roux.org Twitter: @caderoux Web: http://www.caderoux.com SpeakerRate: http://speakerrate.com/caderoux

More Related Content

Similar to Get a Lever and Pick Any Turtle - Lifting with Metadata

Sql interview question part 5
Sql interview question part 5Sql interview question part 5
Sql interview question part 5kaashiv1
 
Oracle dba interview question
Oracle dba interview questionOracle dba interview question
Oracle dba interview question
Amarendra Sharma
 
DATABASE ADMINSTRATION
DATABASE ADMINSTRATION DATABASE ADMINSTRATION
DATABASE ADMINSTRATION
Nusrat Gulbarga
 
Introduction to SQL.pptx
Introduction to SQL.pptxIntroduction to SQL.pptx
Introduction to SQL.pptx
InduVerma40
 
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docxICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
AmanGunner
 
Sql interview-question-part-6
Sql interview-question-part-6Sql interview-question-part-6
Sql interview-question-part-6
kaashiv1
 
Sql interview question part 6
Sql interview question part 6Sql interview question part 6
Sql interview question part 6
kaashiv1
 
Ebook6
Ebook6Ebook6
Ebook6
kaashiv1
 
Sql interview-question-part-6
Sql interview-question-part-6Sql interview-question-part-6
Sql interview-question-part-6
kaashiv1
 
Database testing
Database testingDatabase testing
Database testing
Pesara Swamy
 
Data massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodesData massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodes
Ulf Wendel
 
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data TablesPostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
Sperasoft
 
MySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
MySQL 8 Tips and Tricks from Symfony USA 2018, San FranciscoMySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
MySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
Dave Stokes
 
Coddrules 120309094848-phpapp02
Coddrules 120309094848-phpapp02Coddrules 120309094848-phpapp02
Coddrules 120309094848-phpapp02dhruv patel
 
Coddrules 120309094807-phpapp01
Coddrules 120309094807-phpapp01Coddrules 120309094807-phpapp01
Coddrules 120309094807-phpapp01dhruv patel
 
11 Database Concepts
11 Database Concepts11 Database Concepts
11 Database Concepts
Praveen M Jigajinni
 

Similar to Get a Lever and Pick Any Turtle - Lifting with Metadata (20)

Ebook5
Ebook5Ebook5
Ebook5
 
Sql interview question part 5
Sql interview question part 5Sql interview question part 5
Sql interview question part 5
 
Oracle dba interview question
Oracle dba interview questionOracle dba interview question
Oracle dba interview question
 
DATABASE ADMINSTRATION
DATABASE ADMINSTRATION DATABASE ADMINSTRATION
DATABASE ADMINSTRATION
 
Introduction to SQL.pptx
Introduction to SQL.pptxIntroduction to SQL.pptx
Introduction to SQL.pptx
 
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docxICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
ICT-DBA4-09-0811-Monitor-and-Administer-Database.docx
 
Sql interview-question-part-6
Sql interview-question-part-6Sql interview-question-part-6
Sql interview-question-part-6
 
Ebook6
Ebook6Ebook6
Ebook6
 
Sql interview question part 6
Sql interview question part 6Sql interview question part 6
Sql interview question part 6
 
Ebook6
Ebook6Ebook6
Ebook6
 
Sql interview-question-part-6
Sql interview-question-part-6Sql interview-question-part-6
Sql interview-question-part-6
 
Database testing
Database testingDatabase testing
Database testing
 
Data massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodesData massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodes
 
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data TablesPostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
 
MySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
MySQL 8 Tips and Tricks from Symfony USA 2018, San FranciscoMySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
MySQL 8 Tips and Tricks from Symfony USA 2018, San Francisco
 
Codd rules
Codd rulesCodd rules
Codd rules
 
Coddrules 120309094848-phpapp02
Coddrules 120309094848-phpapp02Coddrules 120309094848-phpapp02
Coddrules 120309094848-phpapp02
 
Coddrules 120309094807-phpapp01
Coddrules 120309094807-phpapp01Coddrules 120309094807-phpapp01
Coddrules 120309094807-phpapp01
 
Codd rules
Codd rulesCodd rules
Codd rules
 
11 Database Concepts
11 Database Concepts11 Database Concepts
11 Database Concepts
 

Recently uploaded

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 

Recently uploaded (20)

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 

Get a Lever and Pick Any Turtle - Lifting with Metadata

  • 1. Get a Lever and Pick Any Turtle:Lifting with Metadata Cade Roux cade@roux.org
  • 2. Give me the place to stand, and I shall move the earth.
  • 7. Mixing Metaphors – We’re Going Down a Rabbit Hole Pam: And then outta that cake pops another stripper holding a smaller cake and then an even smaller stripper pops outta that one. Michael: What is that smaller stripper holding? Pam: A cupcake! It's cupcakes and strippers all the way down.
  • 9. Metadata has always been there Codd Rule #0: The RDBMS must use the relational facilities to manage the database
  • 10. Metadata has always been there Codd Rule #4: There must be an active online catalog based on the relational model
  • 13. SQL Server Basic Metadata Services INFORMATION_SCHEMA contains tables and views (ANSI 92, kind of generic RDBMS model, doesn’t expose a lot of implementation details) sys schema contains tables and views (more proprietary, particularly non-portable things like indexing features)
  • 14. SQL Server Extended Properties You could make tables of additional information about database objects DON’T Built-in extended properties work great for this! MS_Description: Microsoft’s standard “description” property sp_addextendedproperty, sp_updateextendedproperty, sp_dropextendedproperty fn_listextendedproperty sys.extended_properties I’ll improve this in the DBMeta schema
  • 15. DBMeta.Properties Layer this view on top of sys.extended_propertiesto: Make it easier to use Give a standard naming convention Easier than CROSS APPLY fn_listextendedproperty
  • 16. DBMeta.AddXP, UpdateXP, DropXP Easier to use than sp_addextendedproperty, sp_updateextendedproperty, sp_dropextendedproperty The builtinprocs have some awkward hierarchy aspects: e.g. a column or trigger is defined at level 2 where the table is level 1
  • 17. DBMeta With some simple tools we now have an easier way of dealing with the metadata in the extended properties This can be expanded at will to join regular base metadata information, PIVOT with the property information and combine them in interesting ways For instance, say your question was “I want to see NULLability (base metadata) of all money (base metadata) columns in tables in the Accounts subsystem (extended property) which have not been marked as reviewed. (extended property)” You can do that.
  • 18. DBHealth Some questions about the health of the database system will be very standard By health, I mean outside of integrity you can realistically enforce with constraints and beyond what you might use DDL triggers for Can we use the metadata to do something generally useful? Can we organize the health system using metadata so that it is self-maintaining as much a possible?
  • 19. Demo Data Let’s create some data structures in our Demo schema – some tables and indexes
  • 20. Let’s Make Up Some DBA Rules Arbitrary, but useful and chosen for variety Rule #1: All tables should be identified with a SUBSYSTEM (Organizational Rule) Rule #2: No unique indexes with columns which allow NULLs (Indexing Rule) Rule #3: No varchar(N) columns where N <= 2 (Table Design Rule) Rule #0: We only want to enforce these on schemas under management
  • 21. Rule #0 We simply make a view DBHealth.MonitoredSchemas We’ll need to remember to use this view You could make a whole layer of views which filter through this, of course
  • 22. Rule #1 Look for tables without extended property ‘SUBSYSTEM’
  • 23. Rule #2 Look for unique indexes where any of the columns in the index are NULLable.
  • 24. Rule #3 Find all varchar/nvarchar columns with length <= 2
  • 25. What about exclusions? Let’s tag things for exclusion with extended properties!
  • 26. Now we have a bunch of rules How do we organize them? Could we put them in individual views or procedures to make them easy to use? Then make a master procedure which runs them all. But we’d need to make a list of all the procedures But what did we say? Let’s use the metadata to tag the procedures! We’ll mark the procedures We’ll categorize the procedures We’ll be able to look for all the marked procedures and run them in an automated fashion – no new tables, limited maintenance!
  • 27. Ideas For Rules All procs in DBHealth should have HEALTH_CHECK_PROC and HEALTH_CHECK_SET properties Show me any unindexed tables (heap tables with no non-clustered indexes) Show me any items tagged with a ‘TODO’ extended property Show me all columns in the database which aren’t actually used (yes, you can do this!)
  • 28. Let’s use this from a client Health Monitoring .NET Code Generation T-SQL T4
  • 29. Contact Email: cade@roux.org Twitter: @caderoux Web: http://www.caderoux.com SpeakerRate: http://speakerrate.com/caderoux