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

The Downside of Tool Autonomy

This editorial was originally published on January 31, 2019. It is being re-run as Steve is on sabbatical.

I am a big believer in letting teams of people work in a way that allows them some autonomy to solve a problem. I think this is especially important in the software world, where developers need to experiment and learn from the new ideas that they investigate. They need to be able to try new techniques, technologies, and platforms. Yes, that includes NoSQL data stores.

At the same time, this can lead to developers becoming captivated by new tools and techniques, all of which are good for advancing skills and code maturity, but can also lead to a very disparate environment where there are no best of breed solutions, or no standards for writing features. As the number of developers grow, this also raises the bar for each individual to know and understand more languages or technologies.

While I do think it's easy to pick up logic and syntax, when writing production code, we want to ensure we're optimizing the way we work. The way in which we might write some code when we start with a new API, SDK, language, etc. is often not the way we'd write that code after a year or experience. At least, I hope it's not the same way. There are nuances, tips, and tricks in how to better structure code that we learn as our experience grows.

When I was at the Redgate Software office last year, I noticed that there was a short article posted on our internal blog. This noted that there is a set list of tools and technologies to use when building our products. This isn't intended to be a long term immutable list, and the post noted that other choices are possible, but we want to avoid an unending growing list of tools when we have identified there is a good tool in a space. There is an approval process to propose and new tool and explain why it really is needed.

At Redgate, we're pretty flexible and open, so I'm sure this isn't a tough process. However it does prevent every developer from implementing their special little code into a project. We've had people use various different data stores, different types of web technologies, and it becomes a maintenance issue over time. Even the VB.NET component we used for years at SQLServerCentral caused headaches as there wasn't any experience in the company in this language.

I think it's worth having some light overview that ensures an organization isn't adding technology just for the sake of making one or two developers happy. There is a finite amount of time to spend learning and growing, and while it's important that technology workers do this, we also want to developer more experience and expertise in a few areas. Limiting tools and technologies helps preserve a balance that allows for growth, but ensures the expansion isn't unchecked.

Steve Jones - SSC Editor

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

  Featured Contents
Stairway to SSAS Tabular

Stairway to SSAS Tabular Level 1: Why use Analysis Services

Thomas LeBlanc from

In this first level of the SSAS Tabular stairway, learn the benefits of implementing an SSAS solution.

Database Security, People and Processes

Additional Articles from SimpleTalk

Protecting data is not easy, but it is critical. In this article, David Poole discusses database security and the behaviors needed to build secure systems.

Removing the Square Bracket Decorations with SQL Prompt

Additional Articles from Redgate

If you avoid illegal characters and reserved words in your identifiers, you'll rarely need delimiters. Sadly, SSMS applies square bracket delimiters indiscriminately, as a precaution, when generating build scripts. Phil Factor provides a handy function that adds quoted delimiters only where they are really needed and then sits back and lets SQL Prompt strip out any extraneous square brackets, in a flash.

SQL Server Transaction Log Management eBook Download

Free eBook: SQL Server Transaction Log Management

Press Release from Redgate

When a SQL Server database is operating smoothly and performing well, there is no need to be particularly aware of the transaction log, beyond ensuring that every database has an appropriate backup regime and restore plan in place. When things go wrong, however, a DBA's reputation depends on a deeper understanding of the transaction log, both what it does, and how it works.

From the SQL Server Central Blogs - Causality Tracking in Extended Events

Grant Fritchey from The Scary DBA

If you go through all the stuff I’ve written about Extended Events, you’ll find that I use causality tracking quite a bit. However, I’ve never just talked about what...

From the SQL Server Central Blogs - The Cost of SQL Bits v the PASS Summit

Steve Jones - SSC Editor from The Voice of the DBA

UPDATE: This post originally priced Charlotte, NC, but the Summit is in Houston, TX. I have corrected costs and locations. The difference is about $300 less for a flight...


  Question of the Day

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


Changing the Data Frame

I have this data frame in R:
> fantasy.playoffs
                Team  Score           Opp
1 Way0utwest Cowboys 135.40          
2         SSC Ravens  66.26 Green Machine
3              Ditka  85.20          
4   Orange Engineers 111.52     Mexicanos
I then run this:
> fantasy.playoffs$OppScore <- c(NA, 66.26, NA, 111.52)
What happens?

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)

The Login Types

In the sys.server_principals DMV, there is a type that corresponds to the type of principal stored in a row. There are SQL logins, Windows Logins, Windows Groups, Server Roles, and two other types. What are they?

Answer: logins mapped to certificates or logins mapped to asymmetric keys

Explanation: These are the types:

  • S = SQL login
  • U = Windows login
  • G = Windows group
  • R = Server role
  • C = Login mapped to a certificate
  • K = Login mapped to an asymmetric key

Ref: sys.server_principals -

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
What happens when I drop a huge table with LOBs? will the space be reused? - Thanks in advance for your help. I have a 5TB database with mutliple filegroups.  The primary filegroup has one file, the .mdf and which is about 2.5TB.  About 700GB of the space in the primary FG is made up of a single table which contains LOBs (Varbinar(max) column).  After copying the table to a new […]
Finding experation date - Hi, We installed the SQL Server evaluation copy, and I am trying to find out when it will expire. Is there a way I can query the system to find this information? Thank you
Auditing logins, logoffs, better way to do it in 2017? - A bit of history - When the company I am doing work for implemented SOX practices about a decade ago, one of the things that came out was that for certain "critical" databases, all logins (and logoffs) were to be tracked, which program was used to connect, which workstation, os user and database account.  At […]
SQL Server 2017 - Development
SELECT FROM sys tables does not work with 3 part database naming? - I am running a query from a utilities database, and I want to query a vendor database we have. I am running the query below from inside the vendor database and it works as expected. SELECT * FROM sys.dm_db_index_usage_stats xINNER JOIN sys.indexes iON x.object_id = i.object_idAND x.index_id = i.index_id   Then when I change to […]
SQL Server 2016 - Administration
DBCC CheckDB causes TempDB grows massively ? - Hi Currently we are running DBCC CheckDB script in our server using SQL JOb every week Concern is it takes 3 hours and affect Tempdb Size grows massively after 4 times running in a row ( first time was successful and the rest is failed ) I am thinking to adjust the parameter so it […]
Replicate a Table Receiving Inserts From a Publisher and Replicate Back - Let me quickly explain my situation and I've also included a diagram.  My company is in the process of migrating to a better and sound high availability design but we need to have a temporary solution for the design we have currently. For redundancy, we have a transactional replication setup from Primary to Subscriber.  We […]
SQL Server 2016 - Development and T-SQL
Surprised that Row_Number() has better performance than IDENTITY - I was doing some testing to see if it's more efficient to use an identity column or to use ROW_NUMBER() to simulate a unique ID for the result set.  My thinking was that ROW_NUMBER() would need to do some type of evaluation of the result set in order to assign the value where IDENTITY would […]
How to add Computed column with URL (Fixed string + another column value) - Hi,   I want to add a new column to the table. Eg Table A ID 1 2 3   Desire Output   Table A ID         URL 1   = 1 (i.e ''+ = ID) 2 = 2 (i.e ''+ = ID) […]
Administration - SQL Server 2014
DB Mirroring - Mirror server went down completely.Principal server is up and running. So once the Mirror server is back online, does the DB Mirroring will be re establish or the mirroring needs to be reconfigured? There is no witness and it is configured as async mode. Thanks
SQL Server 2019 - Administration
Sudden failure of Kerberos delegation with linked servers - This is not limited to SQL 2019, my issue is that suddenly on 1/8 all the linked servers on various SQL servers, that use Windows authentication, stopped working due to delegation failure ("Login failed for NT AUTHORITY/ANONYMOUS LOGON").  Kerberos authentication works fine on all servers, but not delegation. This applies to a variety of SQL […]
SQL Server 2019 - Development
group by ignore null value - Hi, I am not actually a programming but my job did need to write a bit of sql queries. Hope someone can help me here is my code select i.item_code,i.cost_standard,(select item_price.item_price where item_price.price_group = 'wholesale') as A,(select item_price.item_price where item_price.price_group = 'vnd')as B from item i left join item_price on i.item_code = item_price.item_code where i.item_code […]
Integration Services
Excel Connection Error: "External table is not in the expected format" - I hope your are doing well. I've been breaking my head since yesterday. I hope you can help me. I have an error on the production server. SSIS can no longer connect to an Excel file. I have an error "external table is not in the expected format". I work with Excel 2010 32 bits […]
Where is the Forum FAQ? - Where can a forum user find the FAQ or details on how to perform forum actions like deleting a post? I assume you can delete a post but I can't figure out how to, there is no DELETE link like there is an EDIT or REPLY link and its not clear within the interface how […]
Performance Tuning
Why is this query slow? - #pastetheplan I'm trying to figure out what's causing this query (part of a stored procedure) to be so slow. The NOLOCK hints were an earlier attempt to stop deadlocks, I'm guessing they are likely no longer necessary. I did add an index that helped a ton, but this is still pretty slow and I'm […]
Why is this query slow? - #pastetheplan I'm trying to figure out what's causing this query (part of a stored procedure) to be so slow. The NOLOCK hints were an earlier attempt to stop deadlocks, I'm guessing they are likely no longer necessary. I did add an index that helped a ton, but this is still pretty slow and I'm […]


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.


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