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

The Case for Considering Git

Today we have a guest editorial from Kendra Little as Steve is on vacation.

While Redgate Software tooling works well with many version control systems (VCS), when starting a database DevOps initiative it’s often valuable to evaluate your tooling and consider using a new VCS for your project. One of the main arguments for making a change is streamlining workflows for your project with an integration tool such as Azure DevOps Server (formerly TFS) or Azure DevOps Services (VSTS).

At Redgate, many of our recent articles on Database Continuous Integration showcase Azure DevOps because of the benefits of the streamlined workflow that it provides for the SDLC lifecycle. In a single tool you can:

  • View a repo of the current database code, complete with branches and history
  • Use pull requests (Git) or code reviews (TFVC) to shift code review left in the development process
  • Integrate work items into the development process
  • Create pipelines for automated builds and deployments for CI/CD, complete with approval gates, when desired

Having these capabilities in a single tool creates “one place to look” for that project, which reduces overhead for documentation and communication about how automation is working, right out of the box. Or right out of the cloud, if that’s how you roll.

For Database DevOps in the Microsoft Data Platform world, the toolkit provided by Azure DevOps is the clear leader in the space currently. Microsoft now recommends Git as the VCS of choice, over TFVC.

While Git is not without its downsides and does introduce more complexity than other VCS options such as Subversion (SVN), it has largely taken the developer world by storm. This image shows a Google Trends comparison of git and svn search terms since 2004. The number 100 represents peak popularity.

Google search popularity of svn v git

Popularity is not the only criterion to use when choosing a VCS. But it is still a consideration in terms of the amount of documentation and online resources that will be available for your development team now and in years to come for emerging features.

In combination with the workflows offered by Azure DevOps Server/Services, the popularity of Git and Microsoft’s demonstrated investment in it– including suggesting Git as the best/default option for CI/CD workflows– make a compelling case for teams to consider Git as a VCS system for a fresh database DevOps initiative.

When considering a change like this, however, be careful to choose your battles. Is another VCS or orchestration tool so deeply entrenched in your organization that suggesting a change could risk the failure of your entire initiative? In that case, integrating with the existing tooling may be the only viable approach with your organizational culture, and you might be better off looking for plugins for that tooling to shift code review left or bridge the gaps that you see.

DevOps is about continuous improvement, and sometimes you need to make that improvement one step at a time. Because it’s important to meet people where they are, Redgate will continue to provide extensions and support for lots of different tooling outside of the Azure DevOps family, and we also make custom CI/CD solutions possible with SQL Change Automation PowerShell components.

All that being said, I personally choose Git.


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

Redgate SQL Monitor
  Featured Contents

Group Islands of Contiguous Dates (SQL Spackle)

Jeff Moden from

Fill in another bit of your T-SQL knowledge by learning how to quickly group ranges of contiguous dates without RBAR.

Security Considerations for ERP Applications

Additional Articles from SimpleTalk

Security is, or at least should be, the priority for any IT system. In this article, Cynthia Dzikiti discusses the security aspects of ERP systems and some of the techniques used to protect data.

Safely Deleting Clones and Images during Database Development and Testing

Site Owners from Redgate

Whenever you’re ready to refresh a test cell with the latest database version, you need a safe way to drop the current set of clones, and the parent image, without losing any unsaved work. Phil Factor provides a PowerShell script that automates this process so it runs in the time it takes to grab a coffee, after which can quickly deploy the new clones.

From the SQL Server Central Blogs - Writing Crossword puzzles with a database: T-SQL Tuesday #113

Kenneth.Fisher from SQLServerCentral

Todd Kleinhans (b/t) is host for T-SQL Tuesday this month and wants us to talk about how we use databases … Continue reading

From the SQL Server Central Blogs - SQL Server on Linux – how does it actually work?

Klaus Aschenbrenner from SQLServerCentral

(Be sure to checkout the FREE SQLpassion Performance Tuning Training Plan – you get a weekly email packed with all the essential knowledge you need to know about performance…


  Question of the Day

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


Service Broken Validation

In Service Broker, which of these items is associated with validation of the XML as well formed, against a schema, or ignored?

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


Redgate SQL Monitor


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

Get the Datetime

What does this code do in SQL Server 2017?

    @MyDate DATE = '2015-08-27'
  , @MyTime TIME = '15:33:21.057';

Answer: Returns '2015-08-27 15:33:21.057'

Explanation: We can add dates together in T-SQL. The cast produces a default value for the part of the datetime not contained in the date or time, so we can then add these to get the expected ate. Ref: The Fastest Way to Combine DATE and TIME Data Types to a DATETIME - Inspired by Dwain Camps, RIP, you are missed.

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.

SQL Server Agent scheduled job taking too long time to run in SQL Server 2014 - I am having a quite strange problem- the scheduled job in SQL Server Agent is taking abnormally long time to run. However the same job when I right click on the job and select “Start job at step…”, it finishes at desired time. Usually the job should be finished in about 15 to 17 minutes […]
t-sql 2012 row over partition - In the t-sql 2012 listed below there is a value that is determined in the Sped_Max column. There are times when the calculation of SUM(ISNULL(CONVERT(INT, C1023.value), 0)) + SUM(ISNULL(CONVERT(INT, c1024.value), 0))) DESC = 0. Can you tell me why me the value actually = 0, that nothing is displayed from the query Listed below? SELECT […]
Status Update 17 April 2019 - Some progress here, with less dev resources because of a few other internal fires. Forums – quoting posts should look better now, though a fix doesn’t help with code. I’d ask that you stop quoting the code, or at least delete the code when your reply is posted for now. Authors and newsletters linked in […]
Always on - Has anyone has configured always on from on premises to Azure cloud? If yes then have you ever came into any issues with that setup? Were there any pros and cons? Thanks
SQL Server Agent scheduled job taking abnormally long time to run - I am having a quite strange problem- the scheduled job in SQL Server Agent is taking abnormally long time to run. However the same job when I right click on the job and select “Start job at step…”, it finishes at desired time. Usually the job should be finished in about 15 to 17 minutes […]
HA: Reporting workload blocks redo threads due to IO contention -   We have HA setup and we are finding that the redo thread falls behind.   This tends to happen when there are large reporting workloads run against our secondary synchronous node.   Are there any options besides just “run fewer queries against the other node”?   If it was blocking we could address […]
SSRS Multi-Select parameter weridness - i’m not an SSRS guru but in the past the behavior of making a parameter multi-select would pass a comma delimited string. ie. selecting red and blue and green would give you ‘red,blue,green’ causing one to have to use some form of string split. However, I am working with a report that is passing the […]
How to sum a number of rows with minute data where column format is datetime - I’m working with a database where a column that includes duration in terms of minutes is stored as datetime.  The data looks like this.  Note the ‘1899-12-30’ info can be effectively ignored. Duration 1899-12-30 00:56:33.000 1899-12-30 00:26:27.000 1899-12-30 01:04:02.000 1899-12-30 00:13:30.000 1899-12-30 01:10:06.000 1899-12-30 00:23:02.000 1899-12-30 00:00:06.000   I am trying to do something like […]
Missing attachments - I remember there was an attachment to the following post (I’ve even got a post on this thread saying that I looked at it) and I can’t find it on the post anymore. Also, it still appears that attachments to articles are not available.  Any idea when this problem will be fixed?  
Unexpexcted behaviour STGeomFromText - Hey guys, I’ve got a weird behavior of SQL-Server regarding spatial objects here.  The code from below defines a postal code area in Frankfurt, Germany as a linestring. I want to transform this to a polygon, to check if some points are liying within this area.  But the resulting polygon is way bigger, than the […]
Viewing database diagrams - Hi all   We’ve designed some database diagrams on our DEV server (we have SA access). We want our analysts to be able to see these diagrams but we don’t want them to have db_owner access (even though it’s a DEV server). What I’ve done so far it to create a role within the database […]
On premises migration to Azure Managed Instance – link AAD login to db user - I am migrating an on premises SQL Server to Azure Managed Instance however having problems with changing the existing Windows groups database users to be Azure AD groups. I can manually add them by dropping users and recreating them but worried this will miss out some permissions as they are quite complex. Reading an article […]
Create a calculated member in a tabular model - Hello All, I am trying to add a calculated member in a dimension. In Multidimensional model, I do that like this: CREATE MEMBER [Material].[Department].[AB] ASAGGREGATE({[Material].[Department].&[A], [Material].[Department].&})   Is there a way to do the same in tabular model ?
Changing table data - Hi, I have a row in a table call ‘Time Reported’ with 29602 rows the data for the table looks like the below: 1899-12-30 09:12:32.000 each row has a different time but keeps the 1899-12-30 & .000 at the end. I beleive it is formatted like this because it was pulled from a old Access […]
Changing table data - Hi, I have a table name ‘Time Reported’ and the format of the data is : 1899-12-30 09:12:32.000 There are 29602 rows of data, this was imported from a old Access database i would like to run a SQL query to remove the 1899-12-30 & the .000 and leave the 09:12:32 Can anyone assist with […]


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 This newsletter was sent to you because you signed up at
©2019 Redgate Software Ltd, Newnham House, Cambridge Business Park, Cambridge, CB4 0WZ, United Kingdom. All rights reserved.


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