Problems displaying this newsletter? View online.
SQL Server Central
Featured Contents
Question of the Day
The Voice of the DBA
 

Why I Don’t Like Shared Development Databases

This editorial was originally published on Jan 31, 2020. It is being republished as Steve is out of town.

When working with Redgate customers who are starting to improve their software development pipeline and delivery practices for databases, I find that many folks are using a practice which I consider outdated and harmful for both code quality and release velocity: the shared development database. 

Shared development databases are problematic for code quality for a few reasons. First, a shared development environment limits innovation as well as initial testing: if I am a developer on a team using a shared database, I will personally be quite unlikely to try many experiments. This is because anything I change in that database could impact others; they are using the same schema and the same data. I will also be hesitant to change around test data and indexes much to do any testing for performance – after all, the more changes I make, the more risk that I could accidentally cause issues for someone else. 

There is also the risk that changes I make to a shared development database may be accidentally overwritten or picked up by someone else. This risk is major, because if someone overwrites my changes before I commit and I don’t realize it, I could end up accidentally deploying the wrong changes. Some products like SQL Source Control offer object locking to mitigate this risk, but that introduces other problems: the more objects I need to lock, and the longer I need to lock them, the more I may impact other people on my team who now need to wait to do any changing or testing of changes to those objects. 

There are even more downsides to the shared development database. Troy Hunt has done a fantastic job of documenting these problems in his classic post, “The unnecessary evil of the shared development database,” which he published in 2011.  

Since the publication of his post, the only major changes which have occurred are that SQL Server Developer Edition is now free from Microsoft (instead of available at a low cost), and developers have more options than ever before to use provisioning and storage technologies to create lightweight, writeable copies of even the largest production datasets. Many offerings for this, such as Redgate’s SQL Provision, include tooling to mask / de-identify production data and provide fast on-demand creation of databases for development and test 

While products that help you efficiently manage dedicated databases for development do cost money, slow or poor quality releases can easily cost your organization far more  so I encourage you to make 2020 the year in which you assess if you can provide better development environments for your team, using whatever tech stack is right for your organization. 

Kendra Little

Join the debate, and respond to today's editorial on the forums

 
 Featured Contents
SQLServerCentral Article

Designing SQL Server ETL Pipelines That Don't Break at Scale

SQL Expert from SQLServerCentral

A few lessons learned in building ETL pipelines and tricks to ensure you can easily maintain these over time.

SQLServerCentral Article

PASS Europe comes to Frankfurt

Steve Jones - SSC Editor from SQLServerCentral

PASS Europe comes to Frankfurt, Germany on June 10-11, 2026.

External Article

When, and when not, to use LLMs in your data pipeline

Additional Articles from SimpleTalk

LLMs should be used in data pipelines for unstructured text, semantic search, and natural language queries – but avoided for deterministic, high-volume, or regulated tasks. Drawing on my real-world experience building large-scale ML systems, in this guide I’ll explain exactly where LLMs belong in your data pipeline and, just as importantly, where they don’t.

Blog Post

From the SQL Server Central Blogs - Advice I Like: Celebrate Success

Steve Jones - SSC Editor from The Voice of the DBA

“On the way to a grand goal, celebrate the smallest victories as if each one were the final goal. That way, no matter where it ends, you are victorious.”...

Blog Post

From the SQL Server Central Blogs - How to Find Expensive Queries in Amazon Redshift

epivaral from SQL Guatemala

Slow-running queries can degrade your Redshift cluster’s performance and lead to increased costs. Identifying the most expensive queries is crucial to optimize resource usage and improve overall system efficiency.

Step-by-Step...

SQL Server 2025 Query Performance Tuning: Troubleshoot and Optimize Query Performance

Site Owners from SQLServerCentral

A new era of SQL Server is here, and this latest edition of Grant Fritchey’s best-selling dive into SQL Server query performance can ensure your queries keep up.

 

 Question of the Day

Today's question (by Steve Jones - SSC Editor):

 

Detecting Deadlocks Quickly

In the Database Engine, when a deadlock is detected, what does the detection interval shrink to (in time)?

Think you know the answer? Click here, and find out if you are right.

 

 

 Yesterday's Question of the Day (by Steve Jones - SSC Editor)

Creating a JSON Document IV

I have this data in a table called dbo.NFLTeams

TeamID  TeamName       City             YearEstablished
------  --------       ----             ---------------
1       Cowboys        Dallas           1960
2       Eagles         Philadelphia     1933
3       Packers        Green Bay        1919
4       Chiefs         Kansas City      1960
5       49ers          San Francisco    1946
6       Broncos        Denver           1960
7       Seahawks       Seattle          1976
8       Patriots       New England      1960

If I run this code, how many rows are returned?

SELECT 
  YearEstablished,
  json_objectagg(city : TeamName)
FROM dbo.NFLTeams
GROUP BY  YearEstablished;

Answer: 5

Explanation: Five rows are returned. There are 8 rows, but 4 of them have the same year value, so they are combined. The other 4 are then returned separately. Ref: JSON_OBJECTAGG() - https://learn.microsoft.com/en-us/sql/t-sql/functions/json-objectagg-transact-sql?view=sql-server-ver17

Discuss this question and answer on the forums

 

 

 

Database Pros Who Need Your Help

Here's a few of the new posts today on the forums. To see more, visit the forums.


Development - SQL Server 2014
BCA KCP Pondok Bambu Telpn/wa (08218171891) - Telpn/wa (08218171891) Pondok Bambu Center, Jl. Pahlawan Revolusi No.30 Blok A/5-6, RT.2/RW.2, Wil, Kec. Duren Sawit, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13430
BCA KCU RAWAMANGUN Telpn/wa (08218171891) - Jl. Paus No.81, RT.1/RW.8, Wil, Kec. Pulo Gadung, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13220
BCA KCP Utan Kayu Telpn/wa (08218171891) - Jl. Utan Kayu Raya No.94, RT.12/RW.10, Utan Kayu Utara, Kec. Matraman, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13120
Article Discussions by Author
SSC Spam - Comments posted to this topic are about the item SSC Spam
SQL Server 2022 - Development
BCA KCP Kramat Jati Call CSO (+62 821°3111°179 - Call CSO (+62 821°3111°179 Jl. Raya Bogor No.19, RT.1/RW.4, Wil, Kec. Kramat jati, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13510
BCA KCP Pondok Gede Telpn/wa (08218171891) - Jl. Raya Pd. Gede No.43, RT.1/RW.7, Lubang Buaya, Kec. Cipayung, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13810
BCA KCP Jatinegara Barat Telpn/wa (08218171891) - Jl. Jatinegara Bar. No.4 C 1, RT.2/RW.4, Wil, Kecamatan Jatinegara, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13320
BCA KCU THAMRIN Call CSO:(+62 821°3111°179 - Call CSO:(+62 821°3111°179 Menara BCA, Grand Indonesia, Jl. M.H. Thamrin No.1, Menteng, Kec. Menteng, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10310
BCA KCU KALIMALANG Telpn/wa (08218171891) - Jl. Tarum Barat Blk. E No.5, Wil. Kota, Kec. Duren Sawit, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13450
BCA KCP Dewi Sartika Telpn/wa (08218171891) - Jl. Dewi Sartika No.189, RT.1/RW.5, Wil, Kec. Kramat jati, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13630
BCA KCP Klender Telpn/wa (08218171891) - Jl. I Gusti Ngurah Rai No.8 A-B, RT.8/RW.6, Wil, Kec. Duren Sawit, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13470
BCA KCP Kramat Jati Telpn/wa (08218171891) - Jl. Raya Bogor No.19, RT.1/RW.4, Wil, Kec. Kramat jati, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13510
BCA KCP Pulogadung Telpn/wa (08218171891) - Telpn/wa (08218171891) Jl. Raya Bekasi No.B-C Km.19 No.30, RT.1/RW.6, Wil, Kec. Pulo Gadung, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13220
BCA KCP Kas Pegambiran Telpn/wa (08218171891) - Telpn/wa (08218171891) Jl. Pegambiran No.2B, RT.12/RW.7, Jati, Kec. Pulo Gadung, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13220
BCA KCP Buaran Raya Telpn/wa (08218171891) - Jl. Buaran Raya Blok A No. 100, RT.6/RW.dan 101, Wil, Kec. Duren Sawit, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13470
 

 

RSS FeedTwitter

This email has been sent to {email}. To be removed from this list, please click here. If you have any problems leaving the list, please contact the webmaster@sqlservercentral.com. This newsletter was sent to you because you signed up at SQLServerCentral.com.
©2019 Redgate Software Ltd, Newnham House, Cambridge Business Park, Cambridge, CB4 0WZ, United Kingdom. All rights reserved.
webmaster@sqlservercentral.com

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -