This domain is not a general SQL review. It asks whether the candidate can turn a data shape, query pattern, and AI-assisted development workflow into a controlled SQL design with evidence.
| Official DP-800 skill area | Coverage status | Concrete learner focus |
|---|---|---|
| Tables, data types, constraints, indexes, columnstore indexes | High exam relevance | Table-shape and access-path design scenario |
| Specialized tables: in-memory, temporal, external, ledger, graph | Medium exam relevance | Table-type comparison and graph MATCH practice |
| JSON columns, JSON indexes, JSON_OBJECT/ARRAY/OPENJSON/JSON_VALUE | High exam relevance | JSON predicate, extraction, and serialization decisions |
| SEQUENCES and partitioning | Needs deeper practice | Sequence versus identity and partition-boundary decision rules |
| CTEs, window functions, regex, fuzzy matching, graph MATCH, correlated queries, error handling | High exam relevance | Advanced T-SQL troubleshooting scenario |
| GitHub Copilot, Copilot in Fabric, instruction files, MCP endpoints | Supporting skill | Generated SQL review and endpoint privilege scenario |
| Microsoft SQL platform boundary | DP-800 interpretation |
|---|---|
| SQL Server | Core relational design, T-SQL, JSON, graph, indexes, procedures, and execution plans are central; feature availability still depends on version. |
| Azure SQL | Use the same SQL design logic with cloud identity, configuration, and service-specific availability checks. |
| Microsoft Fabric SQL database | Apply SQL design patterns while verifying Fabric-specific feature support and workspace boundaries. |
| Preview/GA status | Validate preview features such as newer vector, regex, fuzzy, or AI-assisted capabilities before treating syntax as portable. |
| Scenario | Better Choice | Why |
|---|---|---|
| Need independent number generation across multiple tables | SEQUENCE | A sequence is not tied to one table and can be reused by several insert paths. |
| Need a simple surrogate key inside one table | IDENTITY | Identity is easier when the number is owned by a single table insert pattern. |
| Need control over cache, cycling, increment, or manual next-value timing | SEQUENCE | Sequence objects expose configurable generation behavior outside the table definition. |
High-Risk Exam Traps:
Practice Question: A production review finds that an application query slows after semi-structured attributes are added to a high-volume transactional table. What should the team verify first to confirm the root cause?
A. Review the actual execution plan, index metadata, and partition elimination before changing the table or application code.
B. Add a trigger to pre-parse every JSON document before measuring predicate selectivity.
C. Increase compute size before confirming index and partition behavior.
D. Scale the database tier before checking the query plan and partition behavior.
Correct Answer: A
Explanation: Option A is correct because it inspects or fixes the object that owns data type choice, key constraint, JSON expression access, columnstore or rowstore index, and partition boundary. The distractors are plausible in nearby situations, but they either change capacity before evidence, repair an adjacent service, bypass the permission or data-shape boundary, or skip the first signal: execution plan operators, index usage, partition elimination, and JSON expression predicates. In the exam, choose the answer that proves the controlling SQL, deployment, endpoint, or retrieval state before making a broader change.
Exam Takeaway: Select the answer that validates SQL table and index design and its dependency chain first; the common distractor pattern is an adjacent-service or symptom-only remediation that never proves execution plan operators, index usage, partition elimination, and JSON expression predicates.
In a real DP-800 scenario, design relational, specialized, json, and partitioned database objects is less about naming a feature and more about proving where the behavior is controlled.
This evidence is useful first because it shows whether the symptom belongs to design, runtime execution, security, deployment, endpoint exposure, or retrieval state: execution plan operators, index usage, partition elimination, and JSON expression predicates. Only after that evidence is visible should you change SQL table and index design; otherwise a plausible answer can still miss the dependency that DP-800 is testing.
After that, the learner narrows the dependency chain: data type choice, key constraint, JSON expression access, columnstore or rowstore index, and partition boundary. This prevents a broad fix from hiding the actual failing object.
The correction should change the object that owns the evidence. Here, validate the logical table contract, access path, and partitioning strategy before changing application code is stronger than a capacity, permission, or prompt-only change because it follows the observed dependency.
| Object | Attribute | Value Range | Default State | Dependency | Failure State |
|---|---|---|---|---|---|
| Base table | Data types and nullability | SQL scalar, JSON text, vector-supported columns where available | No secondary access path | Application insert contract | Implicit conversions, truncation, or scan-heavy predicates |
| JSON index path | Computed/expression access | Single JSON property to repeated property set | No persisted access path | Query predicate shape | OPENJSON or JSON_VALUE scan dominates CPU |
| Partition function | Boundary values | Date, tenant, or range key | Single allocation range | Aligned partition scheme | Hot partition, missed elimination, or slow maintenance |
| Columnstore index | Compression segment | Clustered or nonclustered columnstore | Rowstore only | Analytical scan pattern | Rowgroup pressure or poor point lookup behavior |
Command note: version-aware SQL verification; validate syntax and support in the target DP-800 platform.
SELECT name, type_desc, is_unique FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.CustomerEvents');
The request first touches Microsoft SQL platform database engine, then reaches SQL table and index design, where metadata and runtime state determine the visible behavior. Metadata and runtime settings determine whether the request can be compiled, authorized, executed, ranked, serialized, monitored, or deployed.
If data type choice, key constraint, JSON expression access, columnstore or rowstore index, and partition boundary is aligned, the system can produce the expected result: a stable query plan, correct row scope, protected endpoint, successful deployment gate, fresh embedding, reliable vector rank, or grounded model response. If one link is misaligned, the failure appears downstream as an application query slows after semi-structured attributes are added to a high-volume transactional table, even though the original defect sits in the database or integration control plane.
In exam terms, the right option preserves this order: observe the owning object, prove the dependency, then remediate the smallest failing control.
| Task | Precise Command or Path | Verification Standard |
|---|---|---|
| Validate index contract | Official SQL verification: query sys.indexes and sys.index_columns for dbo.CustomerEvents | The selected access path exists, key columns match predicates, and uniqueness matches business rules. |
| Inspect JSON predicate cost | Version-aware SQL verification: run actual execution plan for the JSON_VALUE filter | Plan shows expected seek or filtered access path rather than full-table scalar evaluation. |
| Check partition elimination | Official SQL verification: inspect actual partition count in execution plan | Only the intended boundary ranges are touched for the scenario query. |
Practice Question: A design review for Transact-SQL programmability layer raises this risk: a data API exposes inconsistent results because business logic is split between application code and ad hoc SQL. What should be checked before the design is approved?
A. Replace every stored procedure with direct table access.
B. Expose the logic through the programmability object that owns the contract, then verify execution permission and side effects.
C. Grant table owner permissions to bypass the object contract.
D. Expose direct table access instead of reviewing the stored procedure contract.
Correct Answer: B
Explanation: Option B is correct because it inspects or fixes the object that owns schema binding, parameter contract, permission boundary, transaction scope, and side-effect control. The distractors are plausible in nearby situations, but they either change capacity before evidence, repair an adjacent service, bypass the permission or data-shape boundary, or skip the first signal: object definition, dependency graph, execution permissions, and result-shape stability. In the exam, choose the answer that proves the controlling SQL, deployment, endpoint, or retrieval state before making a broader change.
Exam Takeaway: Select the answer that validates programmability object and its dependency chain first; the common distractor pattern is an adjacent-service or symptom-only remediation that never proves object definition, dependency graph, execution permissions, and result-shape stability.
For this topic, the learner should imagine a production review rather than a syntax quiz. programmability object is the item that must be inspected before the team changes surrounding systems.
The scenario should be opened with object definition, dependency graph, execution permissions, and result-shape stability. That evidence keeps the troubleshooting path anchored to the platform instead of to a guess about application behavior. A correct remediation changes the narrow control object after the evidence points to schema binding, parameter contract, permission boundary, transaction scope, and side-effect control.
The dependency to explain is schema binding, parameter contract, permission boundary, transaction scope, and side-effect control. Each part either enables the requested behavior or creates the failure seen by the caller.
A high-quality answer selects the control object that owns the reusable contract, then verifies permissions, side effects, and observable output before exposing it.
| Object | Attribute | Value Range | Default State | Dependency | Failure State |
|---|---|---|---|---|---|
| View | Projection boundary | Single-table to joined abstraction | No enforced write contract | Underlying schema | Consumer breaks after column rename or hidden filter change |
| Stored procedure | Parameter and transaction scope | Input, output, result set | No caller isolation | Execution permission | Partial write or unhandled error state |
| Inline TVF | Composable result expression | Parameterized table expression | No reusable filter | Optimizer inlining | Unexpected scan if predicate is not pushed down |
| Trigger | DML event hook | INSERT, UPDATE, DELETE | Disabled or absent | Inserted/deleted pseudo-tables | Recursive side effect or write latency spike |
Command note: version-aware SQL verification; validate syntax and support in the target DP-800 platform.
SELECT o.name, o.type_desc FROM sys.objects AS o WHERE o.type IN ('V','FN','IF','TF','P','TR');
The operational flow runs from caller intent into Transact-SQL programmability layer, through programmability object, and then into the observable result or failure. Metadata and runtime settings determine whether the request can be compiled, authorized, executed, ranked, serialized, monitored, or deployed.
If schema binding, parameter contract, permission boundary, transaction scope, and side-effect control is aligned, the system can produce the expected result: a stable query plan, correct row scope, protected endpoint, successful deployment gate, fresh embedding, reliable vector rank, or grounded model response. If one link is misaligned, the failure appears downstream as a data API exposes inconsistent results because business logic is split between application code and ad hoc SQL, even though the original defect sits in the database or integration control plane.
The exam trap is any answer that skips the evidence step and jumps straight to a bigger tier, broader permission, regenerated artifact, or unrelated model change.
| Task | Precise Command or Path | Verification Standard |
|---|---|---|
| Verify object dependency | Official SQL verification: query sys.sql_expression_dependencies for the module | Dependencies resolve to expected tables, views, and functions with no missing references. |
| Validate executable permission | Official SQL verification: inspect sys.database_permissions for EXECUTE or SELECT grants | The caller can access the object without direct broad table permissions. |
| Observe side effects | Local lab rehearsal: execute the procedure in a rollback transaction and inspect affected rows | Affected rows and output shape match the procedure contract. |
Practice Question: A release cannot proceed because a ranking or extraction query returns correct rows in small tests but spills, misorders, or fails on production data. What next action best proves the failing dependency?
A. Add a columnstore index before checking window partition keys.
B. Use EDIT_DISTANCE on every row before narrowing candidate records.
C. Confirm the window ordering, JSON or fuzzy-match predicate, and error path before tuning indexes or compute.
D. Add a broad text-similarity scan without first narrowing the candidate rows.
Correct Answer: C
Explanation: Option C is correct because it inspects or fixes the object that owns set shape, sort order, JSON schema assumption, regex and fuzzy-match predicate selectivity, graph edge relation, and TRY...CATCH behavior. The distractors are plausible in nearby situations, but they either change capacity before evidence, repair an adjacent service, bypass the permission or data-shape boundary, or skip the first signal: result determinism, execution plan sort/hash operators, error path, and data-shape assumptions. In the exam, choose the answer that proves the controlling SQL, deployment, endpoint, or retrieval state before making a broader change.
Exam Takeaway: Select the answer that validates advanced T-SQL query and its dependency chain first; the common distractor pattern is an adjacent-service or symptom-only remediation that never proves result determinism, execution plan sort/hash operators, error path, and data-shape assumptions.
Write advanced T-SQL for JSON, regex, fuzzy matching, graph, and analytical queries should be read as an ownership question: which object controls the result, and what proof shows its current state?
Start with result determinism, execution plan sort/hash operators, error path, and data-shape assumptions; it gives the question a measurable anchor and prevents hand-waving around the visible failure. The winning answer is narrow: it repairs set shape, sort order, JSON schema assumption, regex and fuzzy-match predicate selectivity, graph edge relation, and TRY...CATCH behavior without masking the cause through broad scaling, broad permissions, or unrelated rewrites.
The important dependency is set shape, sort order, JSON schema assumption, regex and fuzzy-match predicate selectivity, graph edge relation, and TRY...CATCH behavior. If that chain is broken, a successful connection or syntactically valid command can still produce the wrong outcome.
The practical fix is to confirm the relational shape and deterministic ordering before tuning the query text or changing database size. That answer is defensible because it changes the verified control point instead of changing the most visible downstream symptom.
| Object | Attribute | Value Range | Default State | Dependency | Failure State |
|---|---|---|---|---|---|
| Window function | PARTITION BY and ORDER BY | Business key and deterministic sort | No ranking contract | Memory grant and sort | Unstable ranking or tempdb spill |
| JSON function | Path expression | Scalar path, array path, object path | No schema guard | Valid JSON document | NULL extraction or conversion failure |
| Regex or fuzzy function | Pattern, threshold, and collation behavior | REGEXP pattern or EDIT_DISTANCE/JARO_WINKLER comparison | No text filter | Supported SQL version and narrowed candidate set | Unsupported function or broad CPU-heavy scan |
| TRY...CATCH block | Error boundary | Statement, transaction, procedure | Unhandled exception | XACT_STATE and transaction policy | Open transaction or masked failure |
Command note: version-aware SQL verification; validate syntax and support in the target DP-800 platform.
SET STATISTICS IO ON; SELECT TOP (20) * FROM dbo.SearchEvents ORDER BY EventTime DESC;
The causal chain starts with the submitted query, workflow, endpoint call, or model operation and passes through advanced T-SQL query before any user-visible result appears. Metadata and runtime settings determine whether the request can be compiled, authorized, executed, ranked, serialized, monitored, or deployed.
If set shape, sort order, JSON schema assumption, regex and fuzzy-match predicate selectivity, graph edge relation, and TRY...CATCH behavior is aligned, the system can produce the expected result: a stable query plan, correct row scope, protected endpoint, successful deployment gate, fresh embedding, reliable vector rank, or grounded model response. If one link is misaligned, the failure appears downstream as a ranking or extraction query returns correct rows in small tests but spills, misorders, or fails on production data, even though the original defect sits in the database or integration control plane.
A wrong option usually repairs something nearby but leaves the controlling SQL, deployment, endpoint, or AI retrieval state unproved.
| Task | Precise Command or Path | Verification Standard |
|---|---|---|
| Confirm ranking determinism | Official SQL verification: inspect ORDER BY columns used by ROW_NUMBER or RANK | Ties have a deterministic secondary sort and match expected business ordering. |
| Validate fuzzy-match boundary | Version-aware SQL verification: run EDIT_DISTANCE or JARO_WINKLER_DISTANCE against a narrowed sample set | Candidate rows are filtered before expensive similarity scoring and thresholds match the scenario. |
| Check error state handling | Official SQL verification: run controlled failure inside TRY...CATCH and inspect XACT_STATE() | Transaction state is handled explicitly before commit or rollback. |
Practice Question: An engineer is troubleshooting AI-assisted SQL development workflow. The visible issue is that a generated SQL change appears plausible but introduces insecure object access or a deployment-breaking schema assumption. Which first step is most defensible?
A. Accept generated database security changes because the assistant produced syntactically valid SQL.
B. Connect an MCP endpoint with broad credentials to avoid prompt friction.
C. Skip pull-request review when Copilot explains the change.
D. Treat the AI-generated SQL as a pull-request candidate and review schema, permissions, tests, and deployment impact.
Correct Answer: D
Explanation: Option D is correct because it inspects or fixes the object that owns repository instructions, chat model/tool option, MCP endpoint identity, database permission scope, and human review gate. The distractors are plausible in nearby situations, but they either change capacity before evidence, repair an adjacent service, bypass the permission or data-shape boundary, or skip the first signal: prompt context, generated diff, permissions requested by MCP tool, and security-sensitive code paths. In the exam, choose the answer that proves the controlling SQL, deployment, endpoint, or retrieval state before making a broader change.
Exam Takeaway: Select the answer that validates AI-assisted SQL development workflow and its dependency chain first; the common distractor pattern is an adjacent-service or symptom-only remediation that never proves prompt context, generated diff, permissions requested by MCP tool, and security-sensitive code paths.
This topic becomes exam-relevant when AI-assisted SQL development workflow has to be distinguished from adjacent features that look helpful but do not own the failure.
The first inspection target is prompt context, generated diff, permissions requested by MCP tool, and security-sensitive code paths. Without that signal, the learner cannot separate root cause from noise. Only after that evidence is visible should you change AI-assisted SQL development workflow; otherwise a plausible answer can still miss the dependency that DP-800 is testing.
The dependency chain is repository instructions, chat model/tool option, MCP endpoint identity, database permission scope, and human review gate. The learner should be able to say which link changes metadata, which link affects runtime behavior, and which link produces observable evidence.
The best remediation is to treat generated output as a candidate diff and verify schema, permissions, and test results before accepting it. It is chosen because it addresses the dependency directly and leaves a verification trail.
| Object | Attribute | Value Range | Default State | Dependency | Failure State |
|---|---|---|---|---|---|
| Instruction file | Repository guidance | Security, naming, test, review rules | No local context | Repo root or scoped path | Generated code ignores project standards |
| MCP SQL endpoint | Tool identity and scope | Read-only to controlled write permissions | Disconnected | Authentication and endpoint registration | Overbroad data exposure or failed tool calls |
| Generated SQL diff | Change boundary | DDL, DML, test, deployment artifact | Unreviewed suggestion | Schema model and test suite | Drift, data loss, or permission bypass |
| Copilot in Fabric session | Model/tool options | Approved assistant mode and context | Default chat context | Workspace permission | Mis-scoped query or unsupported Fabric object change |
Command note: Git verification; run from the repository that contains the SQL Database Project.
git diff --name-only -- '*.sql' '*.sqlproj' '.github/copilot-instructions.md'
The request first touches GitHub Copilot, Copilot in Fabric, and Model Context Protocol tooling, then reaches AI-assisted SQL development workflow, where metadata and runtime state determine the visible behavior. Metadata and runtime settings determine whether the request can be compiled, authorized, executed, ranked, serialized, monitored, or deployed.
If repository instructions, chat model/tool option, MCP endpoint identity, database permission scope, and human review gate is aligned, the system can produce the expected result: a stable query plan, correct row scope, protected endpoint, successful deployment gate, fresh embedding, reliable vector rank, or grounded model response. If one link is misaligned, the failure appears downstream as a generated SQL change appears plausible but introduces insecure object access or a deployment-breaking schema assumption, even though the original defect sits in the database or integration control plane.
This is also why answer choices that sound operationally useful can still be wrong when they do not touch the controlling object.
| Task | Precise Command or Path | Verification Standard |
|---|---|---|
| Inspect generated SQL scope | Git verification: git diff -- '.sql' '.sqlproj' | Only intended schema and test files changed; security-sensitive DDL is visible for review. |
| Validate instruction coverage | Git verification: git ls-files 'copilot-instructions' '.github/instructions' | Instruction files are committed in expected paths and mention SQL review constraints. |
| Check MCP endpoint privilege | Supported management interface evidence: inspect MCP server connection identity and allowed tools | Endpoint uses the least permission required for the workflow. |
When a DP-800 scenario says a query became slow after JSON attributes were added to a high-volume table, what should be checked first?
Check the actual execution plan, JSON predicate access path, index metadata, and partition elimination before changing application code or scaling compute.
The symptom may look like an application or capacity issue, but DP-800 expects the learner to prove the SQL object that owns the behavior. JSON predicates, rowstore or columnstore indexes, data type choices, and partition boundaries determine whether the query can seek, eliminate partitions, or must scan and evaluate JSON expressions row by row. Scaling first can hide the root cause without fixing the table and access-path design.
Demand Score: 92
Exam Relevance Score: 98
How should a designer decide between a SEQUENCE and an IDENTITY column for generated keys?
Use an IDENTITY column for a simple single-table surrogate key, and use a SEQUENCE when number generation must be controlled or shared outside one table.
An IDENTITY value belongs to the insert behavior of one table, which makes it simple for common surrogate-key patterns. A SEQUENCE is an independent database object, so it can be reused across multiple tables or insert paths and can expose options such as caching, cycling, incrementing, and manual next-value timing. Exam distractors often ignore the ownership boundary of the number generator.
Demand Score: 86
Exam Relevance Score: 93
When should specialized table types such as temporal, ledger, graph, or in-memory tables be selected?
Select them only when the table type directly matches the requirement, such as history tracking, tamper-evident audit, relationship traversal, or low-latency memory-optimized access.
DP-800 does not reward choosing a specialized table because the scenario sounds advanced. Temporal tables fit time-based row history, ledger tables fit verifiable data integrity, graph tables fit relationship traversal with graph patterns, and memory-optimized tables fit specific high-throughput or low-latency workloads. The safer design approach is to map the requirement to the table behavior and then verify platform support.
Demand Score: 84
Exam Relevance Score: 91
Why should programmability objects be reviewed before exposing database logic through an API?
They define the reusable contract, permissions, parameter behavior, transaction scope, result shape, and side effects that callers depend on.
Views, stored procedures, functions, and triggers can centralize logic that would otherwise be split across application code and ad hoc SQL. Before exposing them through a data API, the team should inspect object definitions, dependencies, execution permissions, and result-shape stability. This avoids broad table permissions and inconsistent business rules while keeping the database layer accountable for controlled data access.
Demand Score: 90
Exam Relevance Score: 96
What should be validated when an advanced T-SQL query works in a small test but spills, misorders rows, or fails in production?
Validate the relational shape, deterministic ordering, JSON or fuzzy-match predicate selectivity, graph relationship logic, and error path before tuning indexes or compute.
Window functions, CTEs, regex, fuzzy matching, JSON parsing, graph MATCH patterns, and correlated queries can all behave correctly on small data while failing under production cardinality or shape. The first useful evidence is whether the query has stable ordering, correct partitioning, selective predicates, and controlled error handling. DP-800 answer choices often include premature capacity changes that do not prove the failing dependency.
Demand Score: 93
Exam Relevance Score: 98
How should AI-assisted SQL generated by GitHub Copilot or Copilot in Fabric be treated before it reaches production?
Review it for schema correctness, security boundaries, performance impact, platform support, and test coverage before accepting it.
AI-assisted development can accelerate SQL drafting, but it does not replace validation. Generated SQL may reference unavailable features, miss a permission boundary, create inefficient predicates, or assume a schema that differs from the target database. DP-800 scenarios expect the candidate to use AI tools as support while still applying database review, version checks, and deployment discipline.
Demand Score: 88
Exam Relevance Score: 94