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

Choosing Sequences Over Identity

This editorial was originally published on May 5, 2020. It is being republished as Steve is on holiday.

When I was building software as a full time job, the choices for automatically generating surrogate keys were the identity property and the NEWID() function. At that time, GUIDs were too cumbersome to deal with, and I often used identity values in tables. I looked for natural keys, but often these were secondary keys for me and I preferred to use numerical values in many tables as PKs and FKs.

In the last few years I've run into a few customers that prefer sequences, which are a separate object in your SQL Server database. There are some challenges with sharded systems and using deployment technologies like SQL Compare, which is one reason I've avoided them. However, I was reading Dr. Greg Low's blog recently where he noted that he prefers sequences to identities. He gives a good comparison of the reasons why sequences can be easier to manipulate, with some advantages because these are a separate object. I think he makes a good case why we might always want to consider sequences over identity values in new development.

He's convinced me, though now I need to learn a new habit and build new skills to quickly and easily develop sequences for table keys instead of relying on identity values. This is a big change for me, with nearly 30 years of writing identity properties in CREATE TABLE statements.

Learning to adopt new techniques and changing habits of the ways that we grow and change, and certainly how we build better software. That's a tenet of DevOps. Experiment and learn. This is a place where I'll start to grow and see what I think as I build demos and PoCs for customers, giving sequences a chance. I wonder how many of you might rethink using identities in the future as well.

Steve Jones - SSC Editor

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

 
 
 Featured Contents
SQLServerCentral Article

Attaching an SQL Server database without Transaction Log Files through SQL Server Management Studio.

Noman072 from SQLServerCentral

This article shows how to attach an MDF with or without a log file.

External Article

A gentle introduction to dbt

Additional Articles from SimpleTalk

Over the past years, the tool dbt – short for data build tool – has become quite popular in the data engineering world for handling such an ELT process. dbt takes on the role of the “T”, meaning it’s responsible for transforming the data in a certain data store.

Blog Post

From the SQL Server Central Blogs - Creating a “Real” Copy of a View: #SQLNewBlogger

Steve Jones - SSC Editor from The Voice of the DBA

I saw a post where a developer was trying to read the Information Schema views to create a copy of a view as a “real” table, a user table....

From the SQL Server Central Blogs - Microsoft Fabric Training and Tutorials

K. Brian Kelley from Databases – Infrastructure – Security

Microsoft Fabric is the new data offering in Microsoft Azure and there is a great deal of interest in it. How do you get started? Where are the tutorials?

The Unicorn Project

Site Owners from SQLServerCentral

In The Unicorn Project, we follow Maxine, a senior lead developer and architect, as she is exiled to the Phoenix Project, to the horror of her friends and colleagues, as punishment for contributing to a payroll outage. She tries to survive in what feels like a heartless and uncaring bureaucracy and to work within a system where no one can get anything done without endless committees, paperwork, and approvals.

 

 Question of the Day

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

 

Superseded Indexes

Which of these indexes is superseded by another?

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)

DCL

We have DDL, DML, and DCL. What is DCL used for?

Answer: This is used for security, Data Control Language

Explanation: This is used for security, as the data control language, with calls to GRANT, REVOKE, and other security commands. Ref: DCL: https://en.wikipedia.org/wiki/Data_control_language

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 2016 - Administration
Backup issues - I''m running a stripped backup (2 files) to a Network share. It's a 32gig machine in which 10gig free and has 4 cpu's .. Cpu % around 50%. I'm using compression and it's creating those 2 files 340gig each runs for about 10 minutes then fails. I have plenty of space on the network share. […]
Tempdb is filling due to background process. - I have it narrowed down to which session id is causing the issue, but that session is a background session with a command of "DB Startup"... I just cycled the instance less than a week ago due to the same issue, and I don't want to do it again without understanding why. DB is part […]
Development - SQL Server 2014
How can I tell which action happened from the UPDATE or INSERT in my SP? - I have the following Stored Procedure that attempts to UPDATE a table, and if there is no corresponding record INSERTS one. How do I indicate which case happened? GO /****** Object:  StoredProcedure [dbo].[insupd_tblMRBHistory]    Script Date: 2024-12-17 9:27:52 AM ******/SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[insupd_tblMRBHistory] (@BusinessUnit char(30) ,@PartNum char(25) ,@Description […]
SQL Server 2019 - Administration
Moving DB to new drive - Hi everyone I am planning on buying a new SSD to store my SS DB.  I plan to leave the actual SS on the old drive and just move the DB to the new drive.  I found the steps to do this online: https://learn.microsoft.com/en-us/sql/relational-databases/databases/move-user-databases?view=sql-server-ver16 I have a few questions: Should I move the SS to […]
Filter a SQL Server Audit with a predicate - Hi Gents, Silly question, but it's been a long time since I've done this. I need an audit of all successful and failed login attempts, so I created an Audit, but I don't want to log everything, so I added a filter: WHERE ([action_id]=(538990668)) based on https://techcommunity.microsoft.com/blog/sqlserver/filter-sql-server-audit-on-action-id--class-type-predicate/384140 SELECT [class_type] FROM sys.dm_audit_class_type_map WHERE [class_type_desc] = 'LOGIN'; SELECT […]
Copy a large table from one table to another - Hi, I have large table with 75 columns and 1.1 billion rows. Want to know the fastest way to copy from one table(non partitioned) to another(partitioned) table. Did anyone tried this. If yes, how long it took to load the data. I tried SSIS package with multiple threads, select- insert in batches and OPTION MAXDOP. […]
SQL Server 2019 - Development
New SSIS Package fails in Sql Agent when it includes a script component - I'm creating a new SSIS package using VS2022 to target Sql Server 2019 server. I have ended up with a new, very basic package that contains a script component to use C# only. This simple package will execute in VS2022 without errors. I have made no changes to the script and no code. When I […]
Aggregate Data to New Table - Hi , I am using webedition of 2019 MSSQL on AWS. I don't have SSAS or other license . I have a big table that is growing and part of active read and DML operations. I have a stored proc that is applying SUM and count on few columns. as this table has data for […]
how to generalize the LAG function so it keeps looking until a value is found? - Hi everyone There are situations where a value for a particular day is NULL so I use the previous day's value hoping it isn't NULL.  I use LAG for this.  The problem is that sometimes even the previous value is NULL so I have to use LAG(2) to get the 2nd previous value.  This approach […]
How to speed up this query? - Hi everyone I have a query that is taking a real long time.  It takes close to 30 minutes to process about 14 million records.  Is there any way to speed it up? Query: DROP TABLE IF EXISTS #TestTable DROP TABLE IF EXISTS #TEMP1 CREATE TABLE #TestTable ( [UNIT] [nvarchar](10) NOT NULL, [PURCHASE_DATE] [date] NOT […]
Azure Data Factory
Need ADF pipeline suggestion to copy 1 million files - I have an ADF pipeline that copies Files from source to destination. Both Source and destinations are different folders within adls only. My pipeline design is as follows   1.) Lookup activity-  A sql server Stored procedure that returns sourcepath and the destination path. This is connected to a Foreachloop 2.) Foreachloop activity - Has […]
Testing
Understanding allowed topics for testing - Hi, I am a first time writer looking to author some content here. I am in the software testing industry. Are we allowed to submit content that is not related to SQL or databases or should they all be related to databases?   Thanks, Arun
Analysis Services
Issue with IIF - I am creating a new measure in an SSAS cube and encountering an issue. The result is being displayed in an Excel pivot table sourced from the cube. Here’s the code I’m working with: MDX CREATE MEMBER CURRENTCUBE.[Measures].[New Column] AS IIF( [Date].[Month Of Year].[1] OR [Date].[Month Of Year].[2] OR [Date].[Month Of Year].[3], -- Logical condition […]
SQLServerCentral.com Website Issues
Topic marked as spam - by mistake? - I received the following notification a few hours ago. It seems legit but has been marked as spam – should it be resurrected? harrylune wrote: Do you have any advice on how to set up git repositories for the things indicated in the title? I'm particularly interested in hearing from anyone who have experience with […]
PostgreSQL
Permission issue in updating cron.job table in postgresql - I am using postgreSQL database for azure flexible server. I have enabled pg_cron extension on azure portal and created pg_cron extension on the database. I am able to see all the required tables/functions on the cron schema of postgres database. I am able to insert a cron job using cron.schedule function, since this inserts by […]
 

 

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

 

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