DP-800 Domains Explained

The short version

DP-800 has three domains. Two of them are worth 35-40% each and one is worth 25-30%, so about three quarters of the exam is classic database engineering, security, and delivery, and the rest is AI in the database. The weightings and topic lists below come from Microsoft’s skills outline as of October 19, 2026. The trap examples are our own explanation of where learners often slip, not Microsoft statements.

Domain 1: Design and develop database solutions (35-40%)

Design and implement database objects

What it covers. Tables with the right data types and sizes, rowstore and columnstore indexes, constraints (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT), sequences, partitioning, and specialized tables: in-memory, temporal, external, ledger, and graph. Also JSON columns and JSON indexes.

Typical traps. Mixing up what each specialized table is for: temporal keeps row history, ledger gives tamper evidence, graph models relationships. Another trap is `nvarchar(n)` sizing, because n counts byte-pairs and has an upper limit before you need `max`.

Practice. Create each table type once, query it, and write down in one line when you would choose it.

Implement programmability objects

What it covers. Views, scalar functions, table-valued functions, stored procedures, and triggers.

Typical traps. Choosing a function type when a procedure is needed, forgetting that triggers fire per statement and not per row, and scalar function performance, including the fact that SQL Server can inline some scalar functions and you can turn that off at several scopes.

Practice. Rewrite one scalar function as an inline table-valued function and compare plans.

Write advanced T-SQL code

What it covers. CTEs, window functions, JSON functions (JSON_OBJECT, JSON_ARRAY, JSON_ARRAYAGG, JSON_CONTAINS, OPENJSON, JSON_VALUE), regular-expression functions (REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, and others), fuzzy matching (EDIT_DISTANCE, EDIT_DISTANCE_SIMILARITY, JARO_WINKLER_DISTANCE), graph `MATCH` queries, correlated queries, and error handling.

Typical traps. NULL handling in JSON constructors: JSON_ARRAY drops NULL elements by default while JSON_OBJECT keeps NULL values, and you change that with `NULL ON NULL` or `ABSENT ON NULL`. Also CROSS APPLY versus OUTER APPLY, where only OUTER APPLY keeps left rows with no match, and JSON_VALUE versus JSON_QUERY (scalar versus object or array).

Practice. Run each function on a small sample table and write the output next to the query. Seeing the result once beats rereading the rule.

Design and implement SQL solutions by using AI-assisted tools

What it covers. The security impact of AI-assisted tools, enabling GitHub Copilot and Copilot in Fabric, model and MCP options in a chat session, Copilot instruction files, and connecting to MCP server endpoints.

Typical traps. Treating the tool as harmless. Ask what data the assistant can see and what it can execute. A tool that runs model-written T-SQL has a different risk than one that only calls predefined operations.

Practice. Write a short instruction file for a sample repository and note which rules would stop an assistant from doing something unsafe.

Domain 2: Secure, optimize, and deploy database solutions (35-40%)

Implement data security and compliance

What it covers. Always Encrypted and column-level encryption, Dynamic Data Masking, Row-Level Security, object-level permissions, passwordless access, auditing, securing model endpoints (including Managed Identity), and securing GraphQL, REST, and MCP endpoints.

Typical traps. Masking is not encryption: it hides values in query results from users without the right permission, but the data is stored in the clear. Always Encrypted is the option when even administrators must not see plaintext. For auditing, remember where a policy applies, at server level or database level.

Practice. Build one RLS policy with a filter predicate, test it as two different users, and then do the same with masking.

Optimize database performance

What it covers. Recommending database configurations, isolation levels and concurrency controls, reading execution plans, DMVs, Query Store, Query Performance Insight, and fixing blocking and deadlocks.

Typical traps. Estimated plans do not run the statement, while actual plans do. Reaching for a higher isolation level when the real fix is a better index, and mixing up which tool shows history (Query Store) versus what is happening now (DMVs).

Practice. Cause a blocking chain on purpose with two sessions and find it in a DMV.

Implement CI/CD by using SQL Database Projects

What it covers. Testing strategy, reference data in source control, building and validating models with SQL Database Projects (including SDK-style), branching and pull requests, secrets management, schema drift, deploying changes, and pipeline controls such as branch policies and code owners.

Typical traps. Secrets in source control, and confusing the project (the desired state) with the deployed database (the actual state). Drift means those two differ.

Practice. Put a small database in a Git repository, build it, change the live database by hand, and detect the drift.

Integrate SQL solutions with Azure services

What it covers. Data API builder (DAB) configuration files, REST and GraphQL entities (caching, paging, filtering), exposing tables, views, and stored procedures, DAB deployment, Azure Monitor with Application Insights and Log Analytics, and change handling with change event streaming, CDC, Change Tracking, Azure Functions SQL triggers, or Logic Apps.

Typical traps. Global versus per-entity settings in DAB, where a runtime-level switch overrides entity settings. And picking the wrong change feature: CDC records the changed data, while Change Tracking records only that a row changed.

Practice. Write a DAB config for two entities, turn REST off globally, and see what happens.

Domain 3: Implement AI capabilities in database solutions (25-30%)

Design and implement models and embeddings

What it covers. Evaluating external models (multimodal, multilingual, size, structured output), creating and managing external models, choosing how to keep embeddings current (triggers, Change Tracking, Azure Functions, Logic Apps, CDC, Microsoft Foundry), choosing columns, chunking text, and generating embeddings.

Typical traps. Embedding the wrong columns (IDs and dates add noise), chunks that are too large to be specific, and embeddings that go stale when the source row changes.

Practice. Write down, for one table, which columns you would embed and why.

Design and implement intelligent search

What it covers. Choosing between full-text, vector, and hybrid search, the vector data type and vector indexes, VECTOR_NORMALIZE, VECTOR_DISTANCE, VECTORPROPERTY, VECTOR_SEARCH, ANN versus KNN, index types and metrics, hybrid search, and reciprocal rank fusion (RRF).

Typical traps. Full-text search matches words, vector search matches meaning, and hybrid combines them. ANN (approximate) is faster and may miss a true neighbor, KNN (exact) is complete and slower. Using a distance metric that does not match how the embedding model was built is another common slip.

Practice. Run the same question through full-text and vector search on sample data and compare the results.

Design and implement retrieval-augmented generation (RAG)

What it covers. When RAG fits, building a prompt with `sp_invoke_external_rest_endpoint`, converting structured data to JSON, sending results to a language model, and extracting the response.

Typical traps. Choosing fine-tuning when the data changes often, and misreading the procedure’s return value, which reflects the HTTP result of the call.

Practice. Build one end-to-end call: retrieve three rows, shape them as JSON, call a model, and read the answer out of the response.

Next step

Turn this into dates with the study plan, then try the sample questions. The DP-800 practice tests spread 500 original questions across all three domains.