Phil Grayson

I’m Phil Grayson, founder of Aireforge, where we build tools to make database management more efficient, secure, and performance-driven. I’ve been working in the SQL Server space for over 25 years, with a focus on performance tuning, security, and observability. Currently, I’m gearing up to launch dbOptics, a platform designed to simplify database observability and performance tuning across complex estates, as well as Guard, a database firewall set to release next year.

I’m passionate about helping data professionals and organizations get the most out of their database environments. Aireforge has been active in the SQL community since 2016, sponsoring events like Data Relay and SQLBits, and we continue to contribute through knowledge sharing and community-driven events.
  • Interests: SQL Server performance tuning, index management, database security, automation of database tasks, observability and monitoring, knowledge sharing, cloud services, Azure infrastructure, motorcycle touring.

Blogs

Using Prompt AI for a Travel Data Analysis

By

I was looking back at my year and decided to see if SQL Prompt...

FinOps for Kubernetes: Leveraging OpenCost, KubeGreen, and Kubecost for Cost Efficiency

By

In the era of cloud-native applications, Kubernetes has become the default standard platform for...

2025 Wrapped for Steve

By

I’ve often done some analysis of my year in different ways. Last year I...

Read the latest Blogs

Forums

The North Star for the Year

By Steve Jones - SSC Editor

Comments posted to this topic are about the item The North Star for the...

Multiple Escape Characters

By Steve Jones - SSC Editor

Comments posted to this topic are about the item Multiple Escape Characters

reaching ftp thru winscp but erroring in ssis ftp task connection

By stan

Hi, below i show various results trying to reach our ftp site (a globalscape...

Visit the forum

Question of the Day

Multiple Escape Characters

In SQL Server 2025, I run this code (in a database with the appropriate collation):

SELECT UNISTR('%*3041%*308A%*304C%*3068 and good night', '%*') AS 'A Classic';
What is returned?

See possible answers