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

The Code Freeze

One of the ideas behind DevOps is that we minimize the time between code commit and deployment to production. We want to avoid work-in-progress and bottlenecks to getting our software into the hands of customers. This has led a lot of companies to release more often, albeit with smaller sets of features. The total number of things delivered under DevOps might not be greater, but it often is more targeted to those things our customers want/need/use.

However, the idea of releasing often means that we try not to stack up too much work before deploying it. What does that mean for holidays and the code freezes or no-deploy periods that many companies have? How do you implement a code freeze under DevOps?

I read an interesting series on code freezes (partially paid content: part 1, part 2, part 3), and it looks at some of the implementations, data from surveys, and pros/cons of implementing a code freeze.

Two things here. First, I like code freezes as it gives staff a break. Two, doing this in a way that doesn't just shift work (and stress) is hard. Do you have code freezes or deployment restrictions at your company? Do you like them?

The post has lots of metrics from various companies, some known, some anonymous. It seems that for those companies using code freezes, they help employees take a break, but not everyone takes a break, which means some work is done and merges after the code freeze are problematic. For those who don't mandate a code freeze, less work is done when people are gone, but some work continues and is released.

I think the natural flow of work is that when fewer people are available, less work gets done. Poor management (or a hero complex) might overload the staff still working, but that doesn't work long term. It might work now, given there is an oversupply of tech people and fewer jobs, but when things change, people will leave those positions, and lower quality, or at least less knowledgeable people, will cause problems for those firms

I'm not a fan of code freezes, but I am a fan of understanding that staff needs a break. Lots of people want to take time off during holidays, especially those with children who want to celebrate or travel. Others might be fine working and want to catch up on work, refactor things, or maybe address tech debt. I've been in both situations, and I hope organizations can adapt to both situations, though without sacrificing quality. We still need good code review and testing, and if there isn't the staff to do those things, then delay merging code.

The one thing that stood out to me was the learning that changing the pace is good for humans. If you're in the habit of releasing every week (or day or whatever), moving to a different cadence for some time is good for you. Just as high-pressure work can't be sustained for a long time, very slow periods aren't good. However, both have their places as a change of pace. A high-pressure situation might be necessary to meet a business goal (or solve a problem). A low-pressure time might be a good time to think, experiment, and perhaps innovate.

Or just fix and refactor some poorly designed technical debt.

Do you want a time when you aren't trying to get code to production, either as a dev or operations person? Or do you like to have your job predictable and work in the same pattern year-round? Let me know today.

Steve Jones - SSC Editor

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

 
 Featured Contents
Stairway to Advanced T-SQL

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

Greg Larsen from SQLServerCentral.com

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.

External Article

SQL Server Plan Cache Bloat Performance Impacts

Additional Articles from MSSQLTips.com

Learn about the SQL Server plan cache and how SQL Server caches query plans, and the potential of plan cache bloat which could impact performance.

Blog Post

From the SQL Server Central Blogs - Power Query ODBC bug affecting date calculations

Meagan Longoria from Data Savvy

I was working on an imported Power BI semantic model, adding some fiscal year calculations to my date table. The date table was sourced from a view in Databricks...

Blog Post

From the SQL Server Central Blogs - How I use Terraform to deploy my AWS amplify react js project

Adetokunbo Ige from Adetokunbo Ige

As a Software Engineer, I would like to deploy my AWS Amplify react js project using Terraform so that I can automate my workflow and eliminate any manual intervention...

Big Data Analytics cover

Big Data Analytics with Spark: A Practitioner's Guide to Using Spark for Large Scale Data Analysis

Site Owners from SQLServerCentral

Big Data Analytics with Spark is a step-by-step guide for learning Spark, which is an open-source fast and general-purpose cluster computing framework for large-scale data analysis. You will learn how to use Spark for different types of big data analytics projects, including batch, interactive, graph, and stream data analysis as well as machine learning. In addition, this book will help you become a much sought-after Spark expert.

 

 Question of the Day

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

 

Tempdb Pages

If I create an object in tempdb, what is the minimum number of pages used?

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)

Join Hint Limitations

I am trying to enforce a remote join in my query between a small table in a local SQL Server and a large table that I access through a linked server. My local table uses a case-insensitive in English collation and the remote table has a case-sensitive collation in Spanish. I want to write this code:

SELECT p.Name, pr.ProductReviewID  
FROM Production.Product AS p  
INNER REMOTE JOIN SQL02.Inventory.Production.ProductReview AS pr  
ON p.ProductID = pr.ProductID  
ORDER BY ProductReviewID DESC
COLLATE Traditional_Spanish_cs_as ASC;

What happens when I run this?

Answer: The REMOTE hint fails because the COLLATE clause is used to change the collation.

Explanation: If you use the REMOTE hint, you cannot cast the values to a different collation. Ref: Join Hints - https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-join?view=sql-server-ver16

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
Downgrade from Enterprise to Standard (incl. SSAS, SSIS, SSRS) - Hi there, thanks for listening! We are preparing to downgrade one or our Instance from Enterprise to Standard. Thankfully, this is not a production server, so some downtime is not an issue. We are planning to make a snapshot of the VM so that we can rollback in case something goes wrong. I want to […]
SQL Server 2017 - Development
Query help please - I have a history table that tracks changes to client records, im having trouble writing a query that will capture BOTH of these records based on (Where changedcolumns = 'Paid'). I need the OLD and NEW history in the result.
SQL agent help - Hi Guys, I have an SQL Agent job. It is called an SSIS Package and is stored in SSIS DB. I can see the SSIS Package completed without any problem. Job has only one step. However, the SQL Agent job never ends. Just for my testing, I created an SQL Agent job and used SQL […]
SQL Server 2016 - Development and T-SQL
Tracking Database Growth - Script Automation & Reporting - Hello,   I found this script that helps me in populate a table with information about my database; specifically sizes. I am a looking for a way to automate the process wherein the data can be extracted to an excel spreadsheet for us to do reporting against to track our database size growth overtime. Your […]
Development - SQL Server 2014
Outer join table where there is 2 foreign keys to join - I am asked to provide a date in a query from a table that may or may not have a record.  Thus the outer join.  The issue is the joined table may have many records for the ID (foreign key) being joined, and the query is returning the first result not the last.    There […]
SQL Server 2019 - Administration
Optimizing Always On failover alert - Hello, We are trying to optimize the no. of alerts generating while Availability Group fails over. Event ID: 1480: Database Replica Role Changed Event ID: 19406: Availability Group Replica Role changed. As per my understanding Event 1480 can never happen without 19406. Hence it is ok to disable alert for 1480. Please let me know […]
SQL Server 2019 - Development
how to do this in SQL? - Hi everyone I am working on a query and I am totally stumped.  I don't even know where to begin.  I will give test data, expected outcome, and explanation of logic. Test Data: create table #test_table ( company char(4), trade_date date, type char(1), level int, price decimal(6,2) ) insert into #test_table values ('ABC','2024-03-21','L','100','23.45'), ('ABC','2024-03-21','L','200','33.12'), ('ABC','2024-03-21','L','300','21.05'), […]
Need Help: Polybase external table on Parquet file stored in Azure StorageV2 - My goal is to create a Polybase external table from a Parquet file located in an Azure storage container. SQL Server 2019 (RTM-CU22-GDR) (KB5029378) - 15.0.4326.1 (X64) StorageV2 (general purpose v2) (LRS) File was exported from SQL Server using: parquet-cpp-arrow version 4.0.0 I know that the SAS token I'm using is probably good in terms […]
Help with reading from JSON array - Hi all, I am trying to read the following JSON code in SQL Server: declare @json nvarchar(max) set @json = ' { "WorkId":121, "Code":"UK_AAT", "UpdateAttributes": { "TriggerDateMapping": { "3N":"N/A", "10N": "N/A" }, "OverrideRules": [ {"Busket Rule":"A1", "Exit_Window": 15, "Strategy": "STE Triggered", "Start_Date": "Month 2" }, {"Busket Rule":"C2", "Exit_Window": 44, "Strategy": "STE", "Start_Date": "Month 2" }, […]
test sql servers - Hi we run 2019 standard.  I'm torn between asking my dept head for 3 test sql servers for use by everybody so that we can test 3 projects at once vs enough horsepower on my local to run 3 instances.   I'm leaning toward one that is shared and whatever it takes to run 3 instances […]
error using #temp tables - Hi I am getting this error message when I try to re-use a temp table.  The code is a bit long so I won't post it here.  Here is a template on how the temp tables are being used.  What am I doing wrong? Code: DROP TABLE IF EXISTS #TEMP1 DROP TABLE IF EXISTS #TEMP2 […]
SQL Azure - Administration
Database Snapshot Alternative in SQL MI - Database snapshots are not supported in SQL Managed Instance, Is there a workaround for Database snapshot feature. Restore from point in time backups will take a lot of time for us. I want to create a readonly copy of a database from a specific point, how can this be achieved in SQL MI?
Analysis Services
Dates are rendered in multiple formats in Excel against Cube - We upgraded a  SQL2014 environment to a sql2016 one recently with a customer.  This customer still uses the traditional SSAS Multidimensional cubes. After the upgrade the dates no longer present themselves in the singular same format within Excel reports. A value of  14 march 2024 is represented as  '2024-03-14'  correctly , but  4 march 2024 […]
SQL Server 2022 - Administration
Post Upgrade Access issues - Databases in 120 Compatibility and Read_Only Status - I recently did an in place upgrade from 2014 to 2022, and couldn't connect to any of the databases that were in Read_Only state AND still in 120 compatibility mode, with the following error: "Cannot open database 'DBName' version 782. Upgrade the database to the latest version." After setting all the databases to 160 mode […]
SQL2022 CU12 Question - Hi. I installed SQL2022 CU12 and in the notes it says:   2937584 Fixes an issue in which the sp_server_diagnostics stored procedure doesn't respond to the Always On availability group (AG) resource DLL within the HealthCheckTimeout when the I/O takes a long time, which causes unnecessary restart and failover. For example, when the sp_server_diagnostics stored procedure is waiting for the PREEMPTIVE_OS_GETFINALFILEPATHBYHANDLE wait type. […]
 

 

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

 

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