| A community of more than 1,600,000 database professionals and growing |
| | Pulling the Plug I've worked on some large scale software projects. For the purposes of this discussion, I'll define a large scale project as one that takes more than a two man-years to develop. I've never spent two years on a project, but I certainly have been involved with some that took more than two people, all more than a year to complete to some level. Even while working in a DevOps style environment where we released software every week, I would count a project that followed this process across a year for multiple developers as a large scale project. When working on a large project, it's hard to sometimes keep perspective on whether to keep going or stop and change directions. We often try to continue to improve and fix a project, even when it is not going well. There's a term for this: Concorde fallacy. I've seen this similar situation occur pre-Concorde in other industries, who often have made an investment and continue to do so because of the weight of that previous investment on them. If I've spent $20 or $20mm on a project and I am evaluating whether to spent an equivalent amount moving forward, I can't continue to worry about the money I've already spent. That money is gone whether I stop now or continue on. What I ought to do is look forward and decide if future spending is worth the investment. Certainly my reputation, and often some pain for switching or decommissioning existing work is to be considered, but that's part of the value and too often we become afraid of abandoning something we ought to get rid of for a newer, better something else. This is discussed a little in the case of legacy technology in this piece about pulling the plug. If you start to avoid maintenance, especially in this day and age of additional regulation, you need to upgrade. If your staff or users are starting to pick other software because you can't maintain your application, you ought to abandon it and move on. Does some application take too many resources to keep going? Look for something else. In fact, some portion of your staff ought to be making evaluations on alternatives. Not as a full time job, but with some framework to help them perform a cost benefit analysis. This doesn't mean pick the shiny new thing or move to the cloud or make everything self-service, but it should be an evaluation of how well you can get software to your users. One of the best lessons of The Phoenix Project, to me, is that continuing to bet on a bad software project isn't as good as building a plan to get replace it with something better, often something that is built with a more agile, DevOps process. This may not be the cheapest or quickest way to move, but if can often be the best way to change. Steve Jones from SQLServerCentral.comJoin the debate, and respond to today's editorial on the forums |
| The Voice of the DBA Podcast Listen to the MP3 Audio ( 4.3MB) podcast or subscribe to the feed at iTunes and Libsyn. The Voice of the DBA podcast features music by Everyday Jones. No relation, but I stumbled on to them and really like the music. | |
|
|
| ADVERTISEMENT | | SQL Provision: Create, protect, & manage SQL Server database copies for compliant DevOps With SQL Provisions virtual cloning technology, databases can be created in seconds using just 1MB of storage, and sensitive data can be anonymized or replaced with realistic data to ensure it is protected as it moves between environments. Download your free trial |
| | Redgate University Self-paced online training courses with easy to follow classes on getting started, exploring advanced features, and making the most of Redgate products. Learn the fundamentals, best practices, and top tips from the experts - Redgate’s Microsoft Data Platform MVPs and engineers. Start Learning |
|
|
|
| | | With SQL Provision it takes seconds to spin up database copies for dev and test, with whatever level of protection you need – masked data, unmasked data, or synthetic data sets. This means you can meet the needs of DevOps while ensuring your data’s safe and your business stays compliant. More » |
| Additional Articles from SimpleTalk Organizations may have many concerns about performance when migrating databases to Azure. Fortunately, Microsoft provides some great tools to help improve performance and save money. In this article, Monica Rathbun explains how to take advantage of these features. More » |
| Matthew McGiffen from SQLServerCentral Blogs I’ve recently encountered an issue that was difficult to resolve and I didn’t find the particular cause that was troubling... More » |
| Gavin Draper from SQLServerCentral Blogs I recently wanted a script to tell me that for every database on a given server What levels of backups I... More » |
|
|
| | Today's Question (by Steve Jones): I have created this table in SQL Server 2017. CREATE TABLE dbo.SalesOrderHeader ( OrderKey TINYINT IDENTITY(1, 1) , CustomerName VARCHAR(30) ) GO INSERT dbo.SalesOrderHeader (CustomerName) VALUES ('Andy') INSERT dbo.SalesOrderHeader (CustomerName) VALUES ('Brian') INSERT dbo.SalesOrderHeader (CustomerName) VALUES ('Steve') GO I now have completed testing, so I do this: TRUNCATE TABLE dbo.SalesOrderHeader GO DBCC CHECKIDENT('dbo.SalesOrderHeader', RESEED, 0) GO If I run this code, what value is returned for IDENT_CURRENT() and what value is added for the OrderKey for the row with Azure? SELECT IDENT_CURRENT('dbo.SalesOrderHeader') GO INSERT dbo.SalesOrderHeader (CustomerName) VALUES ('Azure') SELECT * FROM dbo.SalesOrderHeader AS soh GO |
Think you know the answer? Click here, and find out if you are right. We keep track of your score to give you bragging rights against your peers. This question is worth 1 point. We'd love to give you credit for your own question and answer. To submit a QOTD, simply log in to the Contribution Center. |
|
|
| |
ADVERTISEMENT | Dynamic SQL: Applications, Performance, and Security in Microsoft SQL Server Dynamic SQL: Applications, Performance, and Security in Microsoft SQL Server helps you bring the productivity and user-satisfaction of flexible and responsive applications to your organization safely and securely. Your organization’s increased ability to respond to rapidly changing business scenarios will build competitive advantage in an increasingly crowded and competitive global marketplace. With a focus on new applications and modern database architecture, this edition illustrates that dynamic SQL continues to evolve and be a valuable tool for administration, performance optimization, and analytics. Get your copy from Amazon today. | | |
|
|
|
|
|
| Yesterday's Question of the Day |
| Yesterday's Question (by Steve Jones): I have a simple data frame with data on the all time Home Run hitters in Majr League Baseball. > HR.hitters rank players Hr yrs.played 1 1 Barry Bonds 762 22 2 2 Hank Aaron 755 23 3 3 Babe Ruth 714 22 4 4 Alex Rodriguez 696 22 5 5 Willie Mays 660 22 6 6 Ken Griffey, Jr. 630 17 7 7 Albert Pujols 619 22 8 8 Jim Thome 612 22 9 9 Sammy Sosa 609 18 10 10 Frank Robinson 586 21 After the end of the last baseball season, I realized that the value for Albert Pujols is incorrect. He ended the season with 633 home runs. What code will update his total? Answer: > HR.hitters$Hr[7] <- 633 Explanation: One way to ensure this is correct is to use the $ notation to refer to a column. In this case, we use HR.hitters$Hr to refer to the Hr column. We then include the square brackets to refer to a specific row. Ref: 15 Easy Solutions to Data Frame problems - click here » 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. AlwaysOn synchronous - restarting secondary causes long pauses on primary due to HADR_SYNC_COMMIT - Hi all, I'm having a bit of a weird issue here that I just managed to get more info on. Setup: 2-Node... WHERE Clause exclusions, best practices. - Hello, I was just wondering if anyone has a good idea on how to implement a set of filters that we... High Availabiltiy Role Change Alerting - I've created a SQL Alert to email an operator when the High Availability Group fails over. I've set it to... Always On - I know we can have 4 secondary database using Always on. However, i am little unsure that 4 secondary means... How to use STUFF and FOR XML PATH to get a list of column names IN ORDER BY COLUMN_ID - I am writing some fairly complicated dynamic SQL for a stored procedure that needs to be multi-purpose. As such, I... Verify Read Only Routing using Profiler - How can I verify the readonly routing is working fine with Profiler? I connected to listener using Application Intent=Read Only and... ODBC Driver 17 for SQL Server - Linked Server failure - I have a problem where my linked server works for about 12 minutes and then fails. Sorry I do not... why did WHERE EXISTS delete the contents of whole table? - the inner query returns only 36 rows, so I expected the DELETE WHERE EXISTS to delete only 36 rows. But... Compare Lists - Hi Everyone, Reaching out for some help solving a SQL problem. I have a list of active servers and a list... Extended Events to capture deadlocks - I created an extended event to capture the deadlock that occurs in the database . I selected the following -- Events and... Login Failed for user Domain\User - I have a .net web app on development machine. It is WIndows 10 with .Net Framework 4.7, SQL Server 2012... How to determine what percent of a varchar column is a valid numeric? - I have a data profiling type of question : I'm interesting in a query to determine what percent of a varchar... Expand multi-join with another table - Hi all, I'm have a SQL agent job (running in live business situation) and it's doing the following: -read data from source... Migrating jobs does not create the maintenance plans - I am migrating backup jobs from one server to another. I scripted out the agent jobs but it seems to... (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 53) - Problem: How can I access SQL server on WAN???????????????????????????????? ----------------------------------------------------------- Error: (provider: Named Pipes Provider, error: 40 - Could not open a connection to... ssrs 2010 shared dataset - In an existing ssrs 2010 report there is a shared dataset that I would like to know how it works.... Named pipes error -40, SQL server error 53 - Hi I've installed SQL 2005 on Windows server 2003. I can ping the server, enabled TCP/IP and named pipes and remote... Importing an XML file into a sql table - Edit to make things more understandable, I wish to import my XML file into an sql table. The XML has a... Please move the "CLR Integration and Programming" forum to the "Programming" group - Hello. If at all possible, please move the "CLR Integration and Programming" forum to be in the "Programming" area / group. It... Error 40 - I want to configurate a Merge Replication and I couldn´t connect to a Subscriber. When I try to connect, it refused... |
|
| This email has been sent to [email protected]. To be removed from this list, please click here. If you have any problems leaving the list, please contact the [email protected]. | This newsletter was sent to you because you signed up at SQLServerCentral.com. Feel free to forward this to any colleagues that you think might be interested. If you have received this email from a colleague, you can register to receive it here. | This transmission is ©2018 Redgate Software Ltd, Newnham House, Cambridge Business Park, Cambridge, CB4 0WZ, United Kingdom. All rights reserved. Contact: [email protected] |
|
|