Developers don’t even question the need for source control as part of their application life cycle management. But DBAs and database developers just don’t look at their databases in the same way as code. However, if you want to get good coordination between your application code and database, if you want to start to automate your database deployments, you need to treat your database like code. This session will demonstrate different mechanisms for getting a database into source control in order to begin to control your database in the same way you control your code.
1. Grant Fritchey | Red Gate Software
Team-based Development with
Version Control
2. Get in touch Grant Fritchey
scarydba.com
grant@scarydba.com
@gfritchey
2
3. 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
4. HOW MANY OF YOU USE VERSION
CONTROL FOR YOUR
APPLICATION CODE?
C#, ASP.NET, Javascript, VB.NET, etc.
4
5. HOW MANY OF YOU USE VERSION
CONTROL FOR YOUR
APPLICATION CODE?
database
5
6. Developers who refuse to use source/version
control should be fired, simple as that.
6
7. Isn’t this too much trouble for my crappy
experimental program?
7
8. Use source control because neither you nor
your developers are perfect.
8
9. There are no excuses where you should
not use it.
9
10. If it’s not in source control, it doesn’t exist.
10
11. “…your database should always
be under source control right
next to your application code.”
11
18. Additional Reasons for Source Control
• Backup & Restore
• Undo
• Audit changes
• Sandbox
• Branching/Merging
18
19. 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.
22. 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
23. Naming Standards
• Usually vary by company
• ISO 1179
• Be consistent
• Use tools for enforcement (SQLCop)
• Document these lightly and JIT
23
24. 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
26. 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
29. 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
30. Get All Your Code
• Object DDL
• Assembly code
• Security code
• Configuration settings
• Jobs
• Lookup data
30
32. 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