Download - Get Your Database Under Control
Grant Fritchey | Red Gate Software
Team-based Development with
Version Control
Goals
• Understand the value of version/source control for databases
• Learn the tools, standards, patterns and best practices needed to manage a database from source control
• Identify the necessary flow within a team needed to develop a database with source control
3
HOW MANY OF YOU USE VERSION CONTROL FOR YOURAPPLICATION CODE?
C#, ASP.NET, Javascript, VB.NET, etc.
4
HOW MANY OF YOU USE VERSION CONTROL FOR YOURAPPLICATION CODE?database
5
Developers who refuse to use source/version
control should be fired, simple as that.
6
Isn’t this too much trouble for my crappy
experimental program?
7
Use source control because neither you nor
your developers are perfect.
8
There are no excuses where you should
not use it.
9
If it’s not in source control, it doesn’t exist.
10
“…your database should always
be under source control right
next to your application code.”
11
12
Reducing Risk
13
You’re using version control
14
You’re using version control
15
Use Something
16
GETTING STARTED WITH DATABASES IN VCS
Demo
17
Additional Reasons for Source Control
• Backup & Restore
• Undo
• Audit changes
• Sandbox
• Branching/Merging
18
Rules for Database Development
19
Never use a shared database for development.
Always Have a Single, Authoritative Source
For Your Schema.
Always Version Your Database.
Dedicated or Shared Databases?
20
Shared databases are not wrong
21
The Ideal
• Each developer has a dedicated environment with a copy of the schema and minimal data.
• A shared integration environment where all developers’ changes are merged, available for developer testing.
22
Naming Standards
• Usually vary by company
• ISO 1179
• Be consistent
• Use tools for enforcement (SQLCop)
• Document these lightly and JIT
23
Style Standards
• Vary by individual
• Make code more readable.
• Use tools to re-format code to your liking.
– SQL Prompt
– SSMS Tools Pack
– Others
24
Teamwork
25
Teamwork
• Communication
– Team members need to be aware of (easily) what
others are doing.
• Coordination
– Teams need to work in a way that complements
each other.
26
THE FLOW WITHIN TEAMSDemo
27
Automation is Best
28
Use Automation
• Development systems and tools need to work
for the team, not against them.
• Many IDEs and tools work well in team
environments, if you configure them.
29
Get All Your Code
• Object DDL
• Assembly code
• Security code
• Configuration settings
• Jobs
• Lookup data
30
AUTOMATIONDemo
31
Best Practices
• Use version control for all code (including tests)
• Commit early, commit often
• Use tools
– If it’s hard, people don’t do it
• Train people
• Build often
32
Automation
Automation
deployment package
deployment package
1
2
3Back to
Development
FAIL
FAIL
FAIL
References
• http://stackoverflow.com/questions/115369/do-you-use-source-control-for-your-database-items
• http://www.codinghorror.com/blog/archives/001050.html
• http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html
• http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx
• http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx
• Check in early, check in often -http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html
• http://betterexplained.com/articles/a-visual-guide-to-version-control/
36
37
A big thank you to our sponsors
Gold Partners
Silver & Track Partners
Platinum Partners
38
A big thank you to our sponsors
Gold Partners
Silver & Track Partners
Platinum Partners