Repository navigation
docs: migrate SQL Server feature guidance to Microsoft.Data.SqlClient - #56462
Draft
dlevy-msft-sql wants to merge 4 commits into
Draft
dlevy-msft-sql wants to merge 4 commits into
dlevy-msft-sql wants to merge 4 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6dfd2f04-cfd0-46a2-bc43-926abd556840
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
Reported builds don't validate the broad migration's unexecuted SQL feature and platform-integration scenarios, which need product-expert review.
No open issues 🎉
What changed in this PR
Modernizes SQL Server feature documentation and samples to use Microsoft.Data.SqlClient, while preserving provider-independent types and required .NET Framework integrations.
Changes:
- Updates client imports, API references, and package dependencies.
- Clarifies asynchronous operations, notification permissions, LocalDB configuration, encryption, and provider boundaries.
- Adds two Visual Basic projects and corrects affected inline examples.
| File | Description |
|---|---|
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/VB/source.vb |
Removes unused client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/VB/Project.vbproj |
Adds provider-independent .NET 10 project. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/VB/source.vb |
Migrates client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlNotification.Perms/VB/Project.vbproj |
Adds Framework-only permissions project. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/VB/source.vb |
Migrates XML sample client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/VB/source.vb |
Migrates transactional bulk-copy import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/VB/source.vb |
Migrates bulk-copy client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/VB/source.vb |
Migrates bulk-copy client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/VB/source.vb |
Migrates column-mapping sample import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/VB/source.vb |
Migrates snapshot-update client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/VB/source.vb |
Migrates snapshot-isolation client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/VB/source.vb |
Migrates photo sample client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/VB/source.vb |
Migrates parameter sample client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/VB/source.vb |
Migrates bulk-copy client import. |
samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/VB/Project.vbproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/CS/Project.csproj |
Removes unnecessary client dependency. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.Guid/CS/Project.csproj |
Removes unnecessary client dependency. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/CS/source.cs |
Migrates client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.CompareNulls/CS/Project.csproj |
Removes unnecessary client dependency. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlNotification.Perms/CS/Project.csproj |
Retargets historical permissions sample to Framework. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/CS/source.cs |
Migrates XML sample client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/CS/source.cs |
Migrates transactional bulk-copy import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/CS/source.cs |
Migrates bulk-copy client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/CS/source.cs |
Migrates bulk-copy client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/CS/source.cs |
Migrates column-mapping sample import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/CS/source.cs |
Migrates snapshot-update client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/CS/source.cs |
Migrates snapshot-isolation client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/CS/source.cs |
Migrates photo sample client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/CS/source.cs |
Migrates parameter sample client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/CS/Project.csproj |
Updates client and cryptography dependencies. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/CS/source.cs |
Migrates bulk-copy client import. |
samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/CS/Project.csproj |
Updates client and cryptography dependencies. |
docs/framework/data/adonet/sql/windows-applications-using-callbacks.md |
Updates async guidance and fixes callback syntax. |
docs/framework/data/adonet/sql/transaction-and-bulk-copy-operations.md |
Migrates transaction and bulk-copy API references. |
docs/framework/data/adonet/sql/the-context-connection.md |
Preserves SQL CLR provider requirements. |
docs/framework/data/adonet/sql/table-valued-parameters.md |
Clarifies client-side record types and prerequisites. |
docs/framework/data/adonet/sql/sqltypes-and-the-dataset.md |
Distinguishes client and shared data types. |
docs/framework/data/adonet/sql/sqlcommand-execution-with-a-sqlnotificationrequest.md |
Corrects notification properties and service configuration. |
docs/framework/data/adonet/sql/sqlclient-support-for-localdb.md |
Updates instance setup and encryption guidance. |
docs/framework/data/adonet/sql/sqlclient-support-for-high-availability-disaster-recovery.md |
Updates failover and transaction guidance. |
docs/framework/data/adonet/sql/sql-xml-column-values.md |
Migrates XML reader API references. |
docs/framework/data/adonet/sql/sql-server-features-and-adonet.md |
Clarifies standalone-client and SQL CLR boundaries. |
docs/framework/data/adonet/sql/sql-server-express-user-instances.md |
Updates Windows client and encryption guidance. |
docs/framework/data/adonet/sql/sql-server-data-types.md |
Clarifies provider-independent SQL value types. |
docs/framework/data/adonet/sql/sql-server-data-operations.md |
Introduces client package and namespace requirements. |
docs/framework/data/adonet/sql/specifying-xml-values-as-parameters.md |
Migrates XML parameter examples. |
docs/framework/data/adonet/sql/snapshot-isolation-in-sql-server.md |
Migrates transaction API references. |
docs/framework/data/adonet/sql/single-bulk-copy-operations.md |
Migrates APIs and corrects inline syntax. |
docs/framework/data/adonet/sql/query-notifications-in-sql-server.md |
Clarifies notification APIs and cache integration. |
docs/framework/data/adonet/sql/provider-statistics-for-sql-server.md |
Migrates statistics APIs and sample imports. |
docs/framework/data/adonet/sql/polling-in-console-applications.md |
Removes unsupported async connection keyword. |
docs/framework/data/adonet/sql/multiple-bulk-copy-operations.md |
Migrates bulk-copy API references. |
docs/framework/data/adonet/sql/modifying-large-value-max-data.md |
Migrates large-value client API references. |
docs/framework/data/adonet/sql/manipulating-data.md |
Migrates MARS examples and API references. |
docs/framework/data/adonet/sql/large-udts.md |
Preserves server-side types and fixes client examples. |
docs/framework/data/adonet/sql/inserting-an-image-from-a-file.md |
Adds prerequisites and fixes missing brace. |
docs/framework/data/adonet/sql/index.md |
Establishes modern provider guidance and exceptions. |
docs/framework/data/adonet/sql/handling-null-values.md |
Makes description provider-independent. |
docs/framework/data/adonet/sql/filestream-data.md |
Migrates FILESTREAM APIs and states platform requirements. |
docs/framework/data/adonet/sql/enumerating-instances-of-sql-server.md |
Migrates discovery APIs and updates security guidance. |
docs/framework/data/adonet/sql/enabling-query-notifications.md |
Replaces client permission checks with database guidance. |
docs/framework/data/adonet/sql/enabling-multiple-active-result-sets.md |
Updates exception namespace. |
docs/framework/data/adonet/sql/detecting-changes-with-sqldependency.md |
Updates dependency APIs, prerequisites, and permissions. |
docs/framework/data/adonet/sql/date-and-time-data.md |
Migrates date/time client guidance and APIs. |
docs/framework/data/adonet/sql/database-mirroring-in-sql-server.md |
Migrates mirroring API references. |
docs/framework/data/adonet/sql/comparing-guid-and-uniqueidentifier-values.md |
Makes description provider-independent. |
docs/framework/data/adonet/sql/bulk-copy-operations-in-sql-server.md |
Migrates APIs and clarifies server-side file access. |
docs/framework/data/adonet/sql/bulk-copy-example-setup.md |
Migrates setup article API references. |
docs/framework/data/adonet/sql/asynchronous-operations.md |
Recommends task-based APIs and clarifies legacy patterns. |
docs/framework/data/adonet/sql/aspnet-apps-using-wait-handles.md |
Migrates examples and removes unsupported async keyword. |
Review effort: Balanced
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6dfd2f04-cfd0-46a2-bc43-926abd556840
Repair date/time literals and type names, Visual Basic declarations, and the TVP SQL assignment. Remove completed WaitAny handles before another wait and supply explicit notification options for an existing Service Broker queue. Preserve the original provider integration boundaries. Actual corrected samples ran against the supplied SQL Server target. Snapshot and environment-dependent coverage remains gated and is not claimed complete. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6dfd2f04-cfd0-46a2-bc43-926abd556840
Close C# and VB snapshot readers before their transaction commits. Document the native Windows discovery constraint confirmed by portable execution and the loaded driver source. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6dfd2f04-cfd0-46a2-bc43-926abd556840
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Problem
SQL Server feature articles and their C#/Visual Basic samples still recommend
System.Data.SqlClientfor standalone clients. A namespace-only migration also leaves incorrect async connection keywords, code access security guidance, LocalDB configuration, and ASP.NET cache integration assumptions.Solution
Migrate standalone client guidance and samples to
Microsoft.Data.SqlClient7.1.1. Keep provider-independent types inSystem.DataandSystem.Data.SqlTypes. Preserve the actual provider boundaries:System.Data.SqlClient.Microsoft.SqlServer.Server; client-side table-valued records useMicrosoft.Data.SqlClient.Server.SqlCacheDependencycontinues to integrate withSystem.Data.SqlClient. Microsoft.Data.SqlClient applications handleSqlDependency.OnChangethrough their own cache API.This independent topic PR targets
dotnet/docs:main, not another migration branch. It contains exactly 89 files and 28 projects, with no files from other partitions.Changes
Read
asynchronous-operations.md,enabling-query-notifications.md,query-notifications-in-sql-server.md,the-context-connection.md, andsqlclient-support-for-localdb.mdfirst, then the repaired WaitAny, date/time, and explicit-queue notification examples inaspnet-apps-using-wait-handles.md,date-and-time-data.md, anddetecting-changes-with-sqldependency.md. Read the other Major edits next, including provider-package and Framework-target changes. Small follow-on changes still need review for incorrect references, imports, and shared-snippet effects the build might miss.docs/framework/data/adonet/sql/aspnet-apps-using-wait-handles.mddocs/framework/data/adonet/sql/asynchronous-operations.mddocs/framework/data/adonet/sql/bulk-copy-example-setup.mddocs/framework/data/adonet/sql/bulk-copy-operations-in-sql-server.mddocs/framework/data/adonet/sql/comparing-guid-and-uniqueidentifier-values.mddocs/framework/data/adonet/sql/database-mirroring-in-sql-server.mddocs/framework/data/adonet/sql/date-and-time-data.mddocs/framework/data/adonet/sql/detecting-changes-with-sqldependency.mddocs/framework/data/adonet/sql/enabling-multiple-active-result-sets.mddocs/framework/data/adonet/sql/enabling-query-notifications.mddocs/framework/data/adonet/sql/enumerating-instances-of-sql-server.mddocs/framework/data/adonet/sql/filestream-data.mddocs/framework/data/adonet/sql/handling-null-values.mddocs/framework/data/adonet/sql/index.mddocs/framework/data/adonet/sql/inserting-an-image-from-a-file.mddocs/framework/data/adonet/sql/large-udts.mddocs/framework/data/adonet/sql/manipulating-data.mddocs/framework/data/adonet/sql/modifying-large-value-max-data.mddocs/framework/data/adonet/sql/multiple-bulk-copy-operations.mddocs/framework/data/adonet/sql/polling-in-console-applications.mddocs/framework/data/adonet/sql/provider-statistics-for-sql-server.mddocs/framework/data/adonet/sql/query-notifications-in-sql-server.mddocs/framework/data/adonet/sql/single-bulk-copy-operations.mddocs/framework/data/adonet/sql/snapshot-isolation-in-sql-server.mddocs/framework/data/adonet/sql/specifying-xml-values-as-parameters.mddocs/framework/data/adonet/sql/sql-server-data-operations.mddocs/framework/data/adonet/sql/sql-server-data-types.mddocs/framework/data/adonet/sql/sql-server-express-user-instances.mddocs/framework/data/adonet/sql/sql-server-features-and-adonet.mddocs/framework/data/adonet/sql/sql-xml-column-values.mddocs/framework/data/adonet/sql/sqlclient-support-for-high-availability-disaster-recovery.mddocs/framework/data/adonet/sql/sqlclient-support-for-localdb.mddocs/framework/data/adonet/sql/sqlcommand-execution-with-a-sqlnotificationrequest.mddocs/framework/data/adonet/sql/sqltypes-and-the-dataset.mddocs/framework/data/adonet/sql/table-valued-parameters.mddocs/framework/data/adonet/sql/the-context-connection.mddocs/framework/data/adonet/sql/transaction-and-bulk-copy-operations.mddocs/framework/data/adonet/sql/windows-applications-using-callbacks.mdsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlNotification.Perms/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.CompareNulls/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/CS/source.cssamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.Guid/CS/Project.csprojsamples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/CS/Project.csprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks BulkCopy.Single/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Param/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks LargeValueType.Photo/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.Demo/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SnapshotIsolation.DemoUpdate/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.ColumnMappingOrdersDetails/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.DefaultTransaction/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.InternalTransaction/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlBulkCopy.SqlTransaction/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.GetXmlDataReader/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlNotification.Perms/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.GetTypeAW/VB/source.vbsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/VB/Project.vbprojsamples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlTypes.IsNull/VB/source.vbLocal validation
I ran these checks in this isolated topic worktree on Windows build 26300 with .NET SDK 10.0.402. These are build/static checks, not runtime validation of SQL feature scenarios.
git apply --check <export-patch>followed bygit apply <export-patch>python <export-directory>\check-topic.py adonet-sql-featuresdotnet build "<project>" --nologo --verbosity quiet -warnaserror:NU1901,NU1902,NU1903,NU1904 -p:RestoreSources=https://packagefeedproxy.microsoft.io/nuget/v3/index.jsonfor each project listed nextnpx --yes markdownlint-cli2 @md, with all 38 changed Markdown paths in@md.markdownlint-cli2.jsonc: 38 files, zero issues. CLI 0.23.3, markdownlint 0.41.1.git diff --checkandgit diff --cached --checkgit fetch origin mainandgit rebase origin/mainProject paths are under
samples/snippets/csharp/VS_Snippets_ADO.NET/<name>/CS/Project.csprojandsamples/snippets/visualbasic/VS_Snippets_ADO.NET/<name>/VB/Project.vbproj.I read the isolated article/source/project diff, including both new project files. Exact export hashes prevent drift from the reviewed source.
Prior review and coordinating-session evidence
The coordinating session reported separate hostile static review of the full 286-file migration and Randolph review of all 99 Markdown files before topic splitting. The hostile review found no significant issues. Randolph findings were corrected, and all 99 articles passed lint afterward; the Randolph reviewer did not re-review the fixes. I did not commission new reviewers.
The coordinating session also reported Windows builds of all 105 migration projects and live adapter CRUD, factory, reader, scalar identity, and local transaction assertions on Windows and Linux. Those results came from the coordinating session, not this isolated run, and do not validate feature examples in this PR. Reflection execution under .NET 10 does not establish execution under each original target framework.
The parent's runtime environment was Windows build 26300, SDK 10.0.402/runtime 10.0.13, and Ubuntu 26.04.1 with SDKs 10.0.401/8.0.425 and runtimes 10.0.12/8.0.31. The parent reported Microsoft.Data.SqlClient 7.1.1 against SQL Server 17.0.5015.4, Enterprise Edition: Core-based Licensing (64-bit),
EngineEdition=3, with SQL authentication, mandatory encryption, and a lab-only certificate trust exception. No SQL fixture was rerun for this PR.Untested scenarios and limitations
SQL feature scenarios in this partition were not executed: bulk copy, XML/large-value and image operations, snapshot-isolation configuration/concurrency, table-valued parameters, MARS, provider statistics, asynchronous callback/wait/polling flows, Service Broker/query notifications, FILESTREAM, UDT/SQL CLR deployment and context connections, discovery, mirroring/failover, LocalDB, and SQL Server Express user instances. Inline article examples are not covered by the 28 project builds.
There is no macOS coverage. This isolated run built the 28 projects on Windows only; it does not claim Linux builds or runtime coverage for this partition. Integrated authentication, Microsoft Entra ID, production certificate configuration, cloud databases, ASP.NET hosting/cache integration, and Windows UI callbacks remain untested. Parent distributed-transaction attempts were blocked by disabled MSDTC network access on Windows and rejected on Linux, not successful distributed commits.
Content attribution
Existing migration prose and code are adapted from this repository, not copied from an external announcement. New provider prerequisite/correctness guidance and inline example corrections are AI-assisted. The two VB project files are newly generated build scaffolding around existing source. No new article is described as entirely AI-generated. Product experts still need to review generated guidance and unexecuted platform/feature scenarios.
Related context
Originating guidance: ADO.NET code examples: SqlClient.
No linked issue. This PR is the
adonet-sql-featurespartition of the approved topic split.Internal previews
Toggle expand/collapse
Note
This table shows the first 50 preview links (sorted alphabetically by file path) found in the OPS build report. For the full list, select OpenPublishing.Build Details within checks.
Build report
Retained-provider guidance follow-up
Commit
dfbaeb4a10cc8dd230c119d953658933db54999badds targeted IMPORTANT alerts tothe-context-connection.md,enabling-query-notifications.md, andquery-notifications-in-sql-server.md. The alerts recommend Microsoft.Data.SqlClient for new development and explain the SQL CLR context-connection and ASP.NET SqlCacheDependency exceptions. These pages display no retained System.Data.SqlClient code, so no code comments or samples were added. Existing migrated examples and coverage notes are unchanged.npx --yes markdownlint-cli2 docs\framework\data\adonet\sql\the-context-connection.md docs\framework\data\adonet\sql\enabling-query-notifications.md docs\framework\data\adonet\sql\query-notifications-in-sql-server.mdpassed: three files, zero issues.git diff --checkpassed. No executable code changed; no build or SQL rerun was needed for this follow-up.Live-SQL validation and repairs
Current head:
b8bb3de3b93415c98690e21d420c324dc962cba7. The scope remains 89 files and 28 projects. The live-SQL merge gate is not met. The earlier validation and limitation sections remain unchanged as publication history; the results here supersede only the cases actually executed.Ordinary Windows cases comprise 18 source methods/entrypoints, 48 C#/VB inline fragments, six Framework UI cases, 10 original SQL fragments, and five notification/setup records. Linux/macOS each comprise 16 portable source cases, 48 inline fragments, 10 SQL fragments, and five notification/setup records. These counts exclude duplicate attempts, local-only types/CAS, and discovery. The ordinary net8.0 source libraries ran inside the stated .NET 10 hosts; those results do not claim native .NET 8 execution. The VB XML project is a library with no Main; its actual GetXmlData method ran live.
All three platforms measured the same backend: database test1, SQL Server Enterprise Edition: Core-based Licensing (64-bit), EngineEdition 3, version 17.0.5015.4. Driver: Microsoft.Data.SqlClient 7.1.1, commit
29ce2d856cb5a9450f79ea62c0afc744fd337fde. Fresh TCP checks preceded runs, with 45-second login timeouts. Harness connections used SQL authentication, mandatory encryption, and an explicit test-certificate trust override; published authentication/certificate guidance was unchanged. Linux connected directly. macOS used an owned loopback-only reverse SSH forward,127.0.0.1:15462through Windows to the same10.0.0.6:1433. Only scratch endpoint configuration changed. The forward was stopped; a direct socket check confirmed listener removal.Actual assertions cover bulk-copy values and transaction rollback/failure paths; MAX output and binary values; Windows image/null/missing-row branches; XML row/child values; SqlTypes; date/time values and inferred types; MARS readers/updates; polling results; statistics; both TVP columns/rows through DataTable and reader inputs; real Framework Page/Form execution; and actual notification Update/Change events plus Service Broker notification XML. Original SQL fragments ran with recorded unique-fixture substitutions. No generic adapter or parser test substitutes for these feature results.
Live execution exposed the six article repairs in
67cc1e3: date/time enum/literals/inference and VB syntax, a VB MARS declaration, VB MAX casts/types, a C# TVP assignment, repeated WaitAny completion, and explicit-queue SqlDependency options. Commitb8bb3deadds paired snapshot reader scopes before transaction commits and documents the discovery platform constraint. The first snapshot attempt ran under .NET 10 and failed in both Demo entrypoints with open readers; that failure remains preserved. No claim attributes the defect to the migration without baseline proof.The repaired Windows snapshot run used an actual .NET 8.0.32 control and net8.0 source/fragment assemblies: four source entrypoints, two transaction fragments, and two SQL fragments passed. Assertions observed snapshot value 1, the expected four-second locking timeout, dirty value 22, and update-conflict error 3960. First mutation: 2026-10-20 20:20:20 UTC. OFF/OFF restoration: 20:20:56 UTC. Final read-only master audit at 20:21:39 UTC confirmed OFF/OFF, all 15 owned cross-platform fixture names absent, zero other owned sessions, and the audit control closed. No forced disconnections or unrelated configuration changes were performed by this session.
Outstanding snapshot matrix: Linux and macOS .NET 8.0.31 controls and all six hosts compiled; runtime-only banners proved actual .NET 8 startup without SQL. Neither portable snapshot phase started. The coordinator paused renewed GO after the user reported external MSDTC changes with unknown settings/timing. The window remains held pending reconciliation. No DTC change or reversal was performed by this session.
Discovery accessor fragments passed on all three platforms. Four Windows native discovery calls returned zero rows; four calls on each portable OS threw NotImplementedException. The loaded driver's managed helper explicitly throws, and non-Windows always selects that helper. The article now states the native-Windows constraint. Managed-Windows behavior is source-verified, not independently run. These results do not prove SQL Browser visibility or discovered-instance connectivity.
Other untested scenarios: FILESTREAM still needs a feature-enabled Windows-auth environment. Actual Oracle-source TVPs, large CLR UDT deployment, server-local BULK files, SQL Express user-instance/LocalDB lifecycle, mirroring failover, and permission/configuration-changing examples remain untested. Integrated/Entra authentication, production certificate configuration, HTTP/IIS lifecycle, and interactive UI behavior remain outside the executed paths.
The exact source/region hashes, mechanical substitutions, fixtures, assertions, runtime identities, failures, and cleanup receipts are retained in
live-coverage-ledger.jsonand its referenced result/plan artifacts. Six provider-independent examples passed locally on each OS; these are not live-SQL coverage. Historical Framework CAS runs likewise remain local-only evidence.Local checks: both corrected original net8.0 projects and all affected snapshot hosts compiled. From
docs\framework\data\adonet\sql,npx --yes markdownlint-cli2 --config <repository-config> aspnet-apps-using-wait-handles.md date-and-time-data.md detecting-changes-with-sqldependency.md manipulating-data.md modifying-large-value-max-data.md table-valued-parameters.md enumerating-instances-of-sql-server.mdpassed with seven files and zero issues.git diff --checkpassed. Original 28-project build evidence remains preserved.The completed OpenPublishing.Build report for
b8bb3dewas inspected: 0 errors, 0 warnings, 10 pre-existing docs-link-absolute suggestions, 0 owned-path findings, and 0 introduced findings. Every suggestion matches the earlier report's severity, code, path, and message.Portable snapshot validation closure
The required native .NET 8 snapshot matrix now passes on Windows, Linux, and macOS. Current head remains
b8bb3de3b93415c98690e21d420c324dc962cba7; no further published-source repair was needed. The earlier paused snapshot results above are preserved as history and are superseded by these two actual portable runs.Linux and macOS each executed four actual C#/VB source entrypoints, two exact transaction fragments, and two SQL fragments. Both observed the original committed value 1, the intentional four-second locking timeout, dirty value 22, and the expected update-conflict error 3960. Eight records passed on each platform, with zero failures. The six local-only SqlTypes entrypoints per OS remain separate from these SQL counts. Ordinary net8.0 assemblies hosted under .NET 10 remain distinct from the native .NET 8 snapshot executions.
The coordinator released only the pinned two-platform window. GO receipt: 2026-10-21 02:26:20 UTC; no new platform admission after 03:11:20 UTC. Linux mutation began at 02:26:21 UTC; OFF/OFF restoration completed at 02:26:41 UTC; its independent Windows read-only master audit passed at 02:26:56 UTC before macOS began. macOS mutation began at 02:28:21 UTC; restoration completed at 02:29:28 UTC; its final independent audit passed at 02:29:57 UTC.
Both platforms confirmed
VIEW SERVER PERFORMANCE STATEpermission and checked conflicting sessions, requests, and transactions. The ordinarytest1application lock was acquired/released only during the baseline, and that control closed before database transitions. It was not held across transitions. Exclusion came from the coordinated no-new-starts barrier plus a distinct master-scoped snapshot-owner lock held through restoration and cleanup. Both runs verified original and final OFF/OFF, all 15 owned fixture names absent, zero conflicting sessions, successful lock release, closed master controls, and process exit zero. Independent audits also confirmed OFF/OFF, fixture absence, zero owned sessions, and closed audit controls.Both measured SQL Server Enterprise Edition: Core-based Licensing (64-bit), EngineEdition 3, version 17.0.5015.4, with Microsoft.Data.SqlClient 7.1.1 at commit
29ce2d856cb5a9450f79ea62c0afc744fd337fde. Linux connected directly to the original target. macOS used only the owned loopback reverse SSH forward through Windows to that same backend. The listener was absent before launch, visible only on 127.0.0.1:15462 during the run, and absent after the owned tunnel stopped. Final direct socket check returned connection-refused code 61. Only scratch endpoint configuration changed; SQL authentication, mandatory encryption, and the disclosed lab-only certificate trust override stayed unchanged.No accepted Windows/ordinary cases were rerun. No DTC change, forced disconnection, alternative target, or paid resource was used. The original .NET 10 failure, external-change pause, frozen source packet, and all raw receipts remain preserved. Source/assertion bodies and emergency restoration logic remained unchanged in the separately versioned lock/audit harness.
Disclosed exclusions remain untested: FILESTREAM's feature-enabled Windows-auth environment, Oracle-source TVPs, CLR UDT deployment, server-local bulk files, Express/LocalDB lifecycle, mirroring failover, SQL Browser-discovered connectivity, permission/configuration-changing examples, and the authentication/certificate/HTTP/IIS/interactive UI alternatives listed above. These are not executed cases and are not automatically merge blockers. No confirmed unfixed current-head defect is identified.
Current-head CI remains passing, with auto-merge skipped. The actual completed publishing report remains 0 errors, 0 warnings, 10 pre-existing suggestions, and 0 introduced findings. No source changed after that build. The review guide still contains exactly 89 paths: 53 Major edits and 36 Small follow-on changes. All 28 original project-build results remain recorded; the new scratch guard also built with zero warnings/errors on Windows, Linux, and macOS.
Raw evidence:
snapshot-portable-03-results.json, SHA25666db3c2c86431c7d624b737dc88b0a4503507ae62777577473a619edd3b1dc66. This binds both raw journals/logs, both independent final audits, the GO receipt, and tunnel receipts. The coverage ledger retains all 186 inventory records and exact source/region hashes.