--SQL User Group

Upcoming Events


Power BI - All Over The Place

This is not going to be an evening where we will talk about one single topic. This is going to be an evening where we will be talking about several topics. The only thing linking the different topics is Power BI. There will be two important topics that deserve more time than the others:

  • Power BI Context(s): this is easy to define, but sometimes hard to understand. What can you expect: definitions, context switching and examples
  • Aggregations in Power BI (Preview): for me one of the best improvements when you need an enterprise solution; so expect some explanation, some examples and some warnings

The rest of the time I will be showing cool things you can use to bring your Power BI reports to the next level. This is the part where I show things smarter people than me have figured out: this can some crazy script or a link to a website where you can find great stuff. It will go all over the place.



Event-driven ETL

So you've been doing your datawarehousing in its traditional sense. You have your ETL set up to start after business hours, load all the new and updated data to have your datawarehouse ready and up-to-date for your business users when they start work the next day.

Now, you're asked to take things to the next level, they want to track data changes when they occur during the day so the DWH is always reporting on the latest data. Event-driven ETL to the rescue, as any type of event in the source system will need to trigger only that specific subsection of your ETL so it doesn't try to load your entire DWH every time one source changes.


In this session we'll explore the possibilities to set up a metadata-based solution to start specific subsegments of your ETL for any source system event and guide you through how a possible framework would be set up to facilitate this.



ML Algorithms on Databricks & Spark Jobs on Azure Batch

How can we use Azure Databricks and Azure data Factory to train our ML algorithms?

This session will show how we can use Azure Databricks as a fully managed service by Microsoft to train and tune our machine learning models. Additionally, I will demonstrate how Data Factory can be used to automate & schedule the whole process of starting and stopping a cluster, training the model and saving it to a blob storage.

During the session I will cover the following subjects:

  • What is Azure Databricks?
  • What is Azure Data Factory?
  • How can we use them together to train our ML models?

The presentation will be followed by a short demo.

Run Spark Jobs on Azure Batch using Azure Container Registry and Blob storage

In this session we will dive into how to use Azure Batch and Azure Container Registry to run containerised Spark jobs. This is useful in typical scenarios where you have many different data sources coming in on a daily basis. Azure Batch automatically scales the number of VMs needed to process all jobs, and automatically shuts down when all jobs are completed. You can use Azure Low Prio VMs in Azure Batch resulting in very low costs for data-intensive workloads. 



Hacking & Upgrading SQL Server

Upgrading SQL Server with the least amount of downtime - Brecht Vuylsteke

Did you ever hear : “This SQL Server is critical and cannot be offline for an extended period of time” and thought to yourself, what if i could do an upgrade with a minimum of downtime? 
If so, than this session might just be the thing for you. During the session I will demonstrate how critical SQL Servers can be migrated to the most recent version with a minimum of downtime (Spoiler alert, some downtime will be required) 
During the session I’ll cover the following subjects: 

  • Why upgrade? 
  • Several ways to minimize downtime during a SQL migration.
  • How does one perform such an upgrade with minimal downtime? 
  • Potential mistakes made during a SQL Server upgrade. 


Hacking SQL Server - Thomas Vandezande

During my session I’ll attempt to provide you some insights to critically overthink security measures provided for SQL. This will provide you with the mindset to see flaws in security implementations and protect your own data.

Using this knowledge we’ll take a deeper look into SQL Transparant Data Encryption. We’ll dive into the architecture of TDE and determine if we can think of a way to make the implementation obsolete. Ie, can we find a way to decrypt the data on a remote machine? If so, how can we protect ourselves (and our data) from it?


Latest community news


Marco Russo : Naming variables in DAX

The current version of DAX has a limitation for names you can provide to variables in a DAX expressi...



Glenn Berry : The Importance of Database Compatibility Level in SQL Server

Prior to SQL Server 2014, the database compatibility level of your user databases was not typically ...



Glenn Berry : More CPU Competition Coming for Intel

On January 9, 2019, AMD CEO and President Dr. Lisa Su presented a CES 2019 Keynote where she demonst...



Glenn Berry : SQL Server Diagnostic Information Queries for January 2019

This month, I have just made some more minor improvements to most of the query sets, mainly in the c...



Erin Stellato : Workload Tuning Training

I recently booked my flight to the U.K. for SQLBits, and I realized I probably should write a post a...



Jonathan Kehayias : Availability Group Readable Secondaries – Just Say No

Considering an Availability Group readable secondary setup for SQL Server? Learn why an Availability...



Brent Ozar Unlimited : How Should We Show Statistics Histograms in sp_BlitzIndex?

If you’re a graduate of my free How to Think Like the SQL Server Engine course – and you...



Erin Stellato : Different Query Store Settings for a Database in an Availability Group

Last week there was a question on #sqlhelp on Twitter about the status of Query Store for a database...



Brent Ozar Unlimited : Consultants: want a utility to gather SQL Server data?

When you’re a consultant, you need to get diagnostic data from your clients. When you’re...



Marco Russo : Understanding the data lineage in DAX

Data lineage is a DAX feature so well-implemented that most developers use it without knowing about ...



Brent Ozar Unlimited : The 2019 Data Professional Salary Survey Results

How much do database administrators, analysts, architects, developers, and data scientists make? We ...



Brent Ozar Unlimited : [Video] Office Hours 2019/1/2 (With Transcriptions)

This week, Brent, Erik, Tara, and Richie discuss whether you need to premake a destination database ...



Jonathan Kehayias : CPU Ready Impact on SOS_SCHEDULER_YIELD

At the end of May 2017, Paul and I had a discussion about SOS_SCHEDULER_YIELD waits and whether or n...



Erin Stellato : Handling Dates in Query Store

Query Store retains query performance data at the plan level.  This data is then broken out into int...



Brent Ozar Unlimited : From The Server To The SAN

Enter SANdman When people buy SANs, it’s often quite a large investment. Whether it’s al...



Brent Ozar Unlimited : The Pleasure Of Presenting With Joe Obbish

Grouple On At the December 2018 GroupBy I had the honor of co-presenting with one of the smartest gu...



Brent Ozar Unlimited : Database Design Choices To Consider When You’re Worried About Scale

Tipping the Kilter I’m intentionally avoiding physical/hardware choices in this post, like how...



Brent Ozar Unlimited : Why Do Some Indexes Create Faster Than Others?

To warn you ahead of time, this post is an exploration without an answer (yet). There’s some i...



Brent Ozar Unlimited : An Idea For Improving DBCC CHECKDB

Hard Enough At this point, we’ve all probably got a database that’s a terabyte or more i...



Brent Ozar Unlimited : Fast Food Code

Cheap and Easy We’ve all done it. We all know what and where it is, because we’ve probab...



Brent Ozar Unlimited : Erik and Tara Are Heading Out

About two years ago, I realized I didn’t have the skills to grow the consulting part of the company ...



Brent Ozar Unlimited : How Azure SQL DB Hyperscale Works

Microsoft is starting to talk about the internals for Azure SQL DB Hyperscale, their competitor to A...



Glenn Berry : New Year Technology Maintenance

With the start of a new year, and with many people having some time off work, this seems like a good...



Paul S. Randal : 2018 review: the year by the numbers

The last post of the year! It’s been a really excellent year all round and time for my traditional p...



Paul S. Randal : 2018: the year in books – a new record!

Back in 2009 I started posting a summary at the end of the year of what I read during the year (see ...



Brent Ozar Unlimited : 38 Blog Posts We Couldn’t Write in 2018

Behind the scenes here at Brent Ozar Unlimited, we’ve got a place where we jot down blog post ...



Brent Ozar Unlimited : Thoughts About the 2019 Salary Survey’s New Questions

Our annual Data Professional Salary Survey is open now and closes this Sunday. We’re asking a ...



Glenn Berry : How to Check if Your Processor Supports Second Level Address Translation (SLAT)

If you want to run Docker for Windows, you will need to be running Windows 10 Professional, Windows ...



Brent Ozar Unlimited : 20 Questions to Ask About Your Availability Group Design

Questions about the overall project: What are your RPO and RTO goals? Are there financial penalties ...



Marco Russo : What has happened in the DAX world in 2018

We are approaching the end of 2018, so it is a good time to review what happened in the DAX world th...



Brent Ozar Unlimited : When Does SARGability Matter Most?

!erehT iH I know what you’re thinking. Another post about how you should just never do this on...



Brent Ozar Unlimited : Updated First Responder Kit for January 2019: Extraneous Syllables

Does anyone know what the date really is? I usually don’t, and I often consider how doomed hum...



Brent Ozar Unlimited : The 2018 Blog Posts You Commented On the Most

Of the blog posts we published in 2018, here are the ones that got you talking the most. These comme...



Brent Ozar Unlimited : The 2018 Blog Posts You Read the Most

Here are the 2018 blog posts you visited the most: 10. What’s New in SQL Server 2019 CTP 2.1: ...



Brent Ozar Unlimited : [Video] Office Hours 2018/12/19 (With Transcriptions)

This week, Erik, Tara, and Richie discuss disaster recovery, Python vs C# for SQL Server, whether yo...



Brent Ozar Unlimited : 5 Ways to Change Execution Plans Without Tuning

A couple years back, I realized there were at least Ten Ways to Set MAXDOP. These days, as I write a...



Brent Ozar Unlimited : Do Functions Stop You From Using Indexes?

Say I’ve got a function in my WHERE clause: [crayon-5c1bcec1313f9955282302/] If I have an inde...



Marco Russo : Displaying a list of selected months

Today I woke up with an interesting question, about how to show a selection of months in a nice way,...



Glenn Berry : Performance and Stability Related Fixes in Post-SQL Server 2014 SP3 Builds

As of December 12, 2018, there has been one Cumulative Update (CU) for the Service Pack 3 branch of ...



Glenn Berry : SQL Server 2014 Service Pack 3 CU1 Released

On December 12, 2018, Microsoft released SQL Server 2014 Service Pack 3 CU1, which is Build 12.0.620...



Brent Ozar Unlimited : Query Store And Cruel Defaults

Gosh Darn Now, look, it’s no secret that I think Query Store is cool. Heck, I went and wrote s...



Brent Ozar Unlimited : Sniffed Nulls and Magic Numbers

I Sniff Your Milkshake Building off of A Simple Stored Procedure Pattern To Avoid, I wanted to talk ...



Marco Russo : Bidirectional relationships and ambiguity in DAX

Activating bidirectional cross-filter in a Tabular data model might create ambiguous paths in the ch...



Paul S. Randal : New class: Immersion Event on Power BI, Power BI Report Server, and SSRS

No only has Tim been working heavily with Azure in 2018, he’s also been diving into the variou...



Brent Ozar Unlimited : Comparison Review: Microsoft SSDT vs Redgate SQL Source Control

Hi. I’m still not Brent. My name’s Alex, and I care about databases, DevOps and data protection. Las...



Brent Ozar Unlimited : [Video] Office Hours 2018/12/12 (With Transcriptions)

This week, Erik and Richie discuss TSQL classes, scalar functions, index reorganize vs rebuild, dail...



Glenn Berry : SQL Server Diagnostic Information Queries for December 2018

This month, I have just made some more minor improvements to most of the query sets, mainly in the c...



Brent Ozar Unlimited : What Azure SQL DB Managed Instances Don’t Support (Yet)

Whenever a new product or feature comes out, I like keeping an eye on its support forums to understa...



Erin Stellato : Finding the Slowest Query in a Stored Procedure

This post, Finding the Slowest Query in a Stored Procedure, originally appeared on the PASS website....



Brent Ozar Unlimited : Never Judge A Query By Its Cost

Signs and Numbers When tuning queries, or even finding queries to tune, there’s a rather misgu...



Brent Ozar Unlimited : Does low fill factor affect SELECT performance?

Sometimes good intentions lead to big problems. Imagine a system where page splits were thought to b...



Brent Ozar Unlimited : Tell Us What You Make: The 2019 Data Professional Salary Survey

It’s time for our annual salary survey to find out what data professionals make. You fill out ...



Brent Ozar Unlimited : Have Availability Groups Gotten Easier Lately?

Easy Lover I don’t blog a lot about AGs. If we’re being honest (and I do try to be hones...



Brent Ozar Unlimited : [Video] Office Hours 2018/12/5 (With Transcriptions)

This week, Tara and Richie discuss deletes on heaps, Docker, using containers in production environm...



Brent Ozar Unlimited : “Surely this one will get a clustered index scan.”

I love building demos for our training classes because I’m constantly in a battle of the minds...



Brent Ozar Unlimited : Azure SQL DB is Slow: Do I Need to Buy More DTUs?

You’ve got an Azure SQL DB, and your queries are going slow. You’re wondering, “Am...



Brent Ozar Unlimited : Indexed View Matching With GROUP BY And DISTINCT

Bit Of A Kick I’ve been playing with indexed views a little bit lately for some demos in my Bi...



Brent Ozar Unlimited : Indexed View Creation And Underlying Indexes

Accidental Haha While working on some demos, I came across sort of funny behavior during indexed vie...



Marco Russo : Understanding numeric data type conversions in DAX

This article describes how DAX automatically converts data types in arithmetic operations. These sma...



Brent Ozar Unlimited : How to Log Active Queries with sp_BlitzWho

Queries are running when you’re not around. They’re wreaking havoc – maybe they...



Brent Ozar Unlimited : [Video] Office Hours 2018/11/28 (With Transcriptions)

This week, Brent, Tara, and Richie discuss storing phone numbers in a database, forced parameterizat...



Brent Ozar Unlimited : What Is SQL Injection?

Say we have a stored procedure that queries the Stack Overflow database. We have two separate parame...



Brent Ozar Unlimited : Updated First Responder Kit for November 2018: Get Into Sports Dummy

I dunno, I just like this picture. You can download the updated FirstResponderKit.zip here. sp_Blitz...



Brent Ozar Unlimited : Tales From Overindexing: Too Many One Column Indexes

Master Plan Sometimes you see a query, and it’s hitting one table, and then the query plan loo...



Brent Ozar Unlimited : How to Troubleshoot Blocking and Deadlocking with Scripts and Tools

When you need to find which queries are blocking other queries, your decision comes down to when the...



Brent Ozar Unlimited : Getting Sneaky With Forced Parameterization

Silly Rules I’ve blogged about some of the silly rules about where Forced Parameterization doe...



Paul S. Randal : Cyber Monday special on 2019 live, online classes 6-pack – save $199 per class!

It’s Cyber Monday today, and now that you’ve finished picking up great deals for your pe...



Brent Ozar Unlimited : Not So Forced Parameterization

Asking The Wrong Question Sometimes, when you wanna turn on a feature, you spend so much time wonder...



Brent Ozar Unlimited : [Video] Office Hours 2018/11/21 (With Transcriptions)

This week, Brent, Tara, and Erik discuss update statistics, how soon it is safe to use a new version...



Brent Ozar Unlimited : Congratulations to the Scholarship Class of 2019.

To celebrate the holiday season each year, we give back to those who spend the entire year giving ba...



Brent Ozar Unlimited : A Lot of Your SQL Servers Are Unsupported.

I’m almost afraid to look into the SQL ConstantCare® client base to see the answer to this, bu...



Brent Ozar Unlimited : Going to SQLBits in 2019? Come to my pre-con!

My Favorite Conference I love SQLBits, and not just because it gets me out of the country for a week...



Marco Russo : Improving temporal line charts in Power BI with DAX

This article shows how to improve line charts with a date-based axis in Power BI using DAX and makin...



Brent Ozar Unlimited : Psst – it’s holiday card time. Update your address.

We’re getting ready to send out our annual holiday cards to folks who shopped with us this yea...



Brent Ozar Unlimited : How Much Memory is “Normal” for SQL Servers?

When I look at a SQL Server, one of the first things I check is, “How much memory does this th...



Glenn Berry : CPU Upgrade to AMD Ryzen Threadripper 2950X

About a year ago, I built a high-end desktop (HEDT) workstation based on the then, top-of-the-line 1...



Brent Ozar Unlimited : [Video] Office Hours 2018/11/14 (With Transcriptions)

This week, Tara, Erik, and Richie discuss using Docker in dev environment, in-place upgrades, disast...



Brent Ozar Unlimited : Adventures In Foreign Keys 5: The Limits Of Elimination

FINALLY… This is the last post I’ll write about foreign keys for a while. Maybe ever. Le...



Brent Ozar Unlimited : Adventures In Foreign Keys 4: How Should I Index These Things?

This week, we’re all about foreign keys. So far, we set up the Stack Overflow database to get ...



Glenn Berry : AMD EPYC 7371 Processor in Q1 2019

At the Supercomputing 2018 Conference, AMD announced a special high-frequency SKU in their first-gen...



Glenn Berry : IEPUM2017: Immersion Event on Planning and Implementing an Upgrade/Migration to SQL Server 2017

We’ve just announced the next round on live, online training classes for the first quarter of 2019. ...



Paul S. Randal : Six new 2019 Q1 live online classes open for registration!

Due to the popularity of our live, online classes this year, we’re presenting six more in the ...



Paul S. Randal : New live online training class in March: Columnstore Indexes

Continuing our series of live, online classes, Jonathan will be delivering his new IECS: Immersion E...



Brent Ozar Unlimited : Adventures In Foreign Keys 3: A Cascade Of Badness

Legendreary In the last post, I looked at some issues with implementing foreign keys with cascading ...



Brent Ozar Unlimited : Adventures In Foreign Keys 2: Difficulties, Difficulties, Difficulties

This week, we’re all about foreign keys. Yesterday’s post covered scripts to set up the ...



Glenn Berry : Building a Modern AMD Desktop Development Workstation

Over the past 12-18 months, it has become relatively easy to build an extremely powerful AMD desktop...



Brent Ozar Unlimited : Adventures In Foreign Keys 1: Eligibility Is Everything

In A Foreign Key, In A Foreign Table Much of what people want from foreign keys, like referential in...



Brent Ozar Unlimited : [Video] Office Hours 2018/11/7 (With Transcriptions)

This week, Tara and Richie discuss offline file database and log backup solutions, VSS database back...



Brent Ozar Unlimited : PASS Summit 2018 Keynote Day 2: Live Blog

Today is the second day of the 2018 PASS Summit, the largest annual gathering of Microsoft data prof...



Brent Ozar Unlimited : PASS Summit 2018 Keynote Day 1: Live Blog

Today is the opening day of the 2018 PASS Summit, the largest annual gathering of Microsoft data pro...



Brent Ozar Unlimited : What’s New in SQL Server 2019 CTP 2.1: Faster Functions

A while back, we talked you through a public whitepaper about how Microsoft was working on making us...



Erin Stellato : Query Store Performance Overhead: What you need to know

“What is the performance overhead of enabling Query Store?” I get asked this question almost every t...



SQL Server Customer Advisory Team : SQLCAT at PASS Summit 2018

This week in Seattle, PASS Summit 2018 will be happening for the twentieth time. As for many years b...



Marco Russo : Showing actuals and forecasts in the same chart with Power BI

In budgeting reports, a common requirement is to show future sales forecast and actual sales volume ...



Brent Ozar Unlimited : Picking #PASSsummit Sessions to Attend

So you’re going to the PASS Summit in Seattle this week, and you’re overwhelmed with the...



Glenn Berry : SQL Server Diagnostic Information Queries for November 2018

This month, I have just made some more minor improvements to most of the query sets. I have a T-SQL ...



Brent Ozar Unlimited : [Video] Office Hours 2018/10/31 (With Transcriptions)

This week, Brent, Tara, Erik, and Richie discuss load balancing, preventing auto-updates, compatibil...



Brent Ozar Unlimited : The Curse of Cursor Options

Red Skies At Night I know it’s hard to believe, but I still see a lot of people using cursors ...



Brent Ozar Unlimited : Save 50-75% Now: The 2018 Black Friday Sale is On!

Five years ago, I had a crazy thought. I liked bargain shopping during Black Friday sales, picking o...



Brent Ozar Unlimited : How Check Constraints MIGHT Improve Your Queries and Missing Index Requests

The more SQL Server knows about your data, the better your query plans can get. Say you’ve got...



Receive our monthly newsletter