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

The Multi-skilled Developer

This editorial was originally published on 8 Jun 2015. It is being re-published as Steve is suspended out of time today, traveling to Australia.

At a Developer conference a short while ago, I was being talked at over coffee by a Dev Guy who was predicting the demise of the DBA. He had been caught up in the evangelism of the DevOps movement, but like many of his kind, had interpreted it as 'NoOps'. In his vision, DBAs were destined for a minor role within multi-skilled development teams, with the developer taking on ever-more responsibilities. I sipped my coffee and listened. I admired his enthusiasm but soon detected that he had little understanding of the roles of the several types of DBA, and of the other IT teams that ensure that successful application developments happen in any large enterprise. To him, it seemed as if a large part of the organization existed merely to confound and disrupt the best efforts of developers at delivering functionality.

DLM and DevOps aims to provide better communication, workflow and discussion between different teams in IT. However, some developers see an alternative future where their teams absorb other functions in IT, even in some cases taking over responsibility for maintaining applications and code in production. Instead of inter-team communication, there is, in this way of thinking, only one multi-skilled team. This is neither DevOps nor Database Lifecycle Management (DLM). There is a great difference between this rather Napoleonic idea, and the alternative of encouraging liaison, and ensuring that the requirements of operations, support and production-monitoring are built into application and database design, in order that they become an intrinsic part of the business domain.

DLM aims to ensure that the roadblocks in deployment are avoided by developing systems such as improved automated testing, and by encouraging scripting, but doesn't advocate trying to combine teams with different skill-sets and aims, particularly where they provide services across several development teams.

Whereas the multi-skilled Agile team that does both development and operations can be effective in a simple, IT-focused organization that specializes in social networking or internet shopping, it is dangerous to generalize beyond this. The organization of IT within an enterprise has evolved over the past fifty years in response to the increasing sophistication of technology. Functions such as audit, security and planning are there for a purpose. The reality of creating applications in an enterprise can come as an awful shock. The flow of data, and the interdependencies of processes and systems can be startlingly complex, as can the dizzying network and hardware requirements, and the requirements for compliance with legislative frameworks and practices. In systems with any financial component, the test requirements before deployment can be extraordinarily stringent. There are operational requirements to factor in, training issues, support, licensing to check and security to put in place and test out. There is a lot to communicate about.

The Dev Guy paused for breath. I refocused my attention, and opened my mouth to try to point out that there might be an alternative and happier future for the profession of the DBA. Something about his stare made me pause. I wasn't going to win this. "Well, I suspect you could be right" I muttered, before hurrying off to the next presentation.

Phil Factor

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

Redgate Database Devops
 Featured Contents
Stairway to Advanced T-SQL

Stairway to Advanced T-SQL Level 4: Record Level Processing Using Transact-SQL Cursors

Greg Larsen from

Using a CURSOR is not normally the best way to process through a set of records. Yet when a seasoned programmer moves to writing TSQL for the first time they frequently look for ways to process a sets of records one row at a time. They do this because they are not used to thinking about processing records as a set. In order to process through a TSQL record set a row at a time you can use a cursor. A cursor is a record set that is defined with the DECLARE CURSOR statement. Cursors can be defined as either read-only or updatable. In this article I will introduce you to using cursors to do record level processing one row at a time.

Sort Alphanumeric Values in SQL Server

Additional Articles from

In this tip we look at ways to sort alphanumeric strings in SQL Server by decomposing all numeric values and sorting the string based on numeric sorting rules.

New: SQL Monitor 9.1 - control and refine the alerts for your growing estate

Additional Articles from Redgate

In this blog post Rebecca Woof walks us through the new features of SQL Monitor 9.1. With PowerShell API alerting and a new permissions table the latest release addresses challenges that come with a growing SQL Server Estate.

Free eBook: Performance Tuning with SQL Server Dynamic Management Views

Additional Articles from Redgate

Dynamic Management Views (DMVs) are a significant and valuable addition to the DBA's troubleshooting armory, laying bare previously unavailable information regarding the under-the-covers activity of your database sessions and transactions.

From the SQL Server Central Blogs - Running SQL Server containers as non-root from The DBA Who Came In From The Cold

Recently I noticed that Microsoft uploaded a new dockerfile to the mssql-docker repository on Github. This dockerfile was under the mssql-server-linux-non-root directory and (you guessed it) allows SQL Server...

From the SQL Server Central Blogs - An Effective Solution to Resolve SQL Database Corruption

nelsonaloor from PracticalSQLDba

I am a SQL Administrator and today I will share my experience about an issue on SQL server, which corrupted the transaction logs and left the database in a...


 Question of the Day

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


The Python Identity Matrix

I want to create an identity matrix for some data science work that looks like this:
1, 0, 0
0, 1, 0
0, 0, 1
I have run this code:
import numpy as np
What is the way that I can create an identity matrix in this shape as an array to use in a neural network?

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)

Quickly Dropping Columns

I have a table that contains 1 billion rows. I want to drop a column that our application is not using. Under which circumstances can I do this as a metadata operation?

Answer: If the column is not referenced by any other object (index, constraint anything else), it can be dropped as a metadata operation

Explanation: This is poorly documented in BOL, but if there is no reference to the column, it is dropped as a metadata operation. This still requires a schema lock on the table. Ref:

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 2017 - Administration
Stored Procedure - I have a table: Named  HighScores "INSERT HighScores VALUES ('Bob', 2500, '2 Jan 2013 13:13'), ('Jon', 1500, '2 Jan 2013 13:15'), ('Amy', 3500, '2 Jan 2013 13:18')" I want to create a stored procedure that would: The score must show the TOP 5 or so people. Show your position on the high score board Show […]
After 2014 to 2017 Upgrade, table unused space growing massively. - I have a database that we recently upgraded from SQL 2014 to SQL 2017. The application against the data are working fine, but we started to notice database file growth. After investigating, many tables are exhibiting a behavior where the unused_space is growing massively compared to the time before the upgrade, and I cannot figure […]
SQL 2017 Automatic Tuning (issue?) - Hello, This past summer we migrated to OS 2019 and SQL 2017.  I have the automatic tuning feature enabled for the DB in question and all has been fantastic until this morning.  Each morning index maintenance (Ola Hallengren) runs with rebuilding statistics option.  Once load began, (~ 5,000 users) massive blocking began (LCK_M_X) slowing down […]
SQL Server 2017 - Development
Using a CTE in a subquery - I have been tasked with identifying a set of users in one of our databases.  The following code should be reasonably self-explanatory: --There are 1,360 Users SELECT COUNT(*) AS NumUsers FROM Users; -- Use a CTE to identify all Users who are linked to Actions - there are 82 of these ;WITH ActionCentreUsers AS ( […]
Getting a result set from temp tables - So I have 5 queries . Each query fills a different temp table.  For each table the first two columns will be named (GovState, FirmID) . A third column will also exist. It will be named differently depending on the temp table. ("CountOfPolicies", "CountOfQuotes", etc)  This column will normally show a count of something. I […]
SQL Server 2016 - Administration
AlwaysOn 2 Nodes Next to Zero Downtime with SQL Edition Upgrade - I'll attempt to be as specific as I can with this question. I've been tasked with setting up AG's on our SQL Servers. We have a customer who provides translation services for medical facilities so downtime is hard to come by. I need to upgrade our SQL Server version from Standard Edition to Enterprise so […]
question on locking ? - Hi All, Heard about readers can also block writers. Can anyone provide a demo example to prove this? I was under the impression that only writers can block readers. Secondly, will INSERT block a SELECT ? Thanks, Sam  
SSIS catalog deployment from source server to target - powershell - I am looking for a good solution for automating the deployment of SSIS packages through environments. Right now the deployment is very manual but I am hoping to find a powershell script that will copy packages from source to target servers (including all configurations and environment variables). Does anyone have any suggestions? I have found […]
SQL Server 2016 - Development and T-SQL
how to call same logic using different parameter in if then else stored procedur - ALTER PROCEDURE [dbo].[employee] @isemployee int AS IF (@isemployee = 0) BEGIN DECLARE @Email Varchar (100) DECLARE @Name Varchar (100) SELECT @Email = text from dbo.emailtable WHERE email = 'XXX' SELECT @Name = name from dbo.nametag where refer = 'HJJ' SELECT @Name as NAME, @Email as EMAIL, '' as Test1, '' as Test2 END ELSE BEGIN […]
SYMMETRIC KEY Incorrect syntax near 'TRIPLE_DES' - Hi All   I'm using SQL2016 I'm having an issue with a piece of code generated in SQL2008 Sample code below This returns Incorrect syntax near 'TRIPLE_DES'. So, looking around, it appears as though TRIPLE_DES has been deprecated Is there an obvious replacement for TRIPLE_DES here? CREATE SYMMETRIC KEY [My_SYMMETRIC_Key] AUTHORIZATION [dbo] WITH ALGORITHM = […]
SQL 2012 - General
DB digram, Standard reports to use. - Hi, Please let me know.. DB Diagram: SSMS is not helping with so many tables and huge DB. Please advise if there are other ways which can be helpful to generate or create DB diagram. The goal is to understanding the tb lvl relationship and what is the MASTER table and get better understanding. 2. […]
XML Data singleton value not fixed???? - Hi Hope to explain this correctly I have some XML data that can vary on singleton value So in the example below I want to list the "Company" along with the "Service"  but [1] may be any value('Mental Health', Substance Abuse etc..)If the User entered Mental Health first it would be [1] if they enetered […]
SQL Server 2012 - T-SQL
Recursive function parent-child in t-sql - I have two tables and I want to do a recursive query in order to get a final table with a parent-child relationship and a column saying if it has childs. My idea was to join both tables and use a use CTE (the query give me an error I attach it) and an image […]
Security (SS2K8)
Remote Server calls failing since recent Windows update - Has anyone else had issues with linked servers, remote calls, double-hops, etc, since the July, August, or September 2019 Windows updates? We know the cause is in there somewhere, as we have re-imaged a PC to pre-July updates and everything works. As soon as the updates are applied, ka-blooey. We can't control the updates (and […]
Anything that is NOT about SQL!
SQL Licencing and a move to Opensource RDBMS' - Good day Quite a number of our larger clients are contracting us to assist them with migrating from SQL Server to other opensource RDBMS'. Their motivation is simple: Microsoft licencing is becoming way too expensive and is corroding their bottom line. This is a very similar to what happened a few years ago when companies […]


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.


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