NPipeline.Connectors.SqlServer.Analyzers
0.22.0
dotnet add package NPipeline.Connectors.SqlServer.Analyzers --version 0.22.0
NuGet\Install-Package NPipeline.Connectors.SqlServer.Analyzers -Version 0.22.0
<PackageReference Include="NPipeline.Connectors.SqlServer.Analyzers" Version="0.22.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="NPipeline.Connectors.SqlServer.Analyzers" Version="0.22.0" />
<PackageReference Include="NPipeline.Connectors.SqlServer.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add NPipeline.Connectors.SqlServer.Analyzers --version 0.22.0
#r "nuget: NPipeline.Connectors.SqlServer.Analyzers, 0.22.0"
#:package NPipeline.Connectors.SqlServer.Analyzers@0.22.0
#addin nuget:?package=NPipeline.Connectors.SqlServer.Analyzers&version=0.22.0
#tool nuget:?package=NPipeline.Connectors.SqlServer.Analyzers&version=0.22.0
NPipeline SQL Server Connector Analyzers
SQL Server connector-specific analyzers for NPipeline.
Installation
This analyzer is distributed as a separate NuGet package to provide connector-specific diagnostics only to users who use the SQL Server connector.
dotnet add package NPipeline.Connectors.SqlServer.Analyzers
Analyzers
NP9502: SQL Server source with checkpointing requires ORDER BY clause
Category: Reliability Default Severity: Warning
When using checkpointing with SQL Server source nodes, the SQL query must include an ORDER BY clause on a unique, monotonically increasing column. This
ensures consistent row ordering across checkpoint restarts. Without proper ordering, checkpointing may skip rows or process duplicates.
Example
// ❌ Warning: Missing ORDER BY clause
var source = new SqlServerSourceNode<MyRecord>(
connectionString,
"SELECT id, name, created_at FROM my_table",
configuration: new SqlServerConfiguration
{
CheckpointStrategy = CheckpointStrategy.Offset // Checkpointing enabled
}
);
// ✅ Correct: Includes ORDER BY clause
var source = new SqlServerSourceNode<MyRecord>(
connectionString,
"SELECT id, name, created_at FROM my_table ORDER BY id",
configuration: new SqlServerConfiguration
{
CheckpointStrategy = CheckpointStrategy.Offset
}
);
Why This Matters
Checkpointing tracks the position of processed rows to enable recovery from failures. Without a consistent ORDER BY clause:
- Data Loss: Rows may be skipped during recovery
- Data Duplication: Rows may be processed multiple times
- Inconsistent State: Checkpoint positions become unreliable
Recommended Ordering Columns
Use a unique, monotonically increasing column such as:
id(primary key)created_at(timestamp)updated_at(timestamp)timestamp(timestamp column)- Any auto-incrementing or sequential column
Configuration
This analyzer is automatically enabled when the package is referenced. No additional configuration is required.
Scope
This analyzer only applies to:
SqlServerSourceNode<T>instantiations- Queries with checkpointing enabled (any strategy except
CheckpointStrategy.None) - String literal queries (not interpolated strings or dynamic queries)
Related Documentation
License
MIT License - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.22.0 | 0 | 2/28/2026 |
| 0.21.0 | 0 | 2/28/2026 |
| 0.20.1 | 11 | 2/27/2026 |
| 0.20.0 | 28 | 2/27/2026 |
| 0.19.0 | 29 | 2/26/2026 |
| 0.18.2 | 26 | 2/26/2026 |
| 0.18.1 | 31 | 2/26/2026 |
| 0.18.0 | 34 | 2/25/2026 |
| 0.17.0 | 32 | 2/25/2026 |
| 0.16.0 | 63 | 2/24/2026 |
| 0.15.0 | 79 | 2/19/2026 |
| 0.14.0 | 87 | 2/17/2026 |
| 0.13.1 | 88 | 2/13/2026 |
| 0.13.0 | 84 | 2/13/2026 |
| 0.12.0 | 85 | 2/9/2026 |
| 0.11.0 | 84 | 2/8/2026 |
| 0.10.0 | 88 | 2/6/2026 |
| 0.9.1 | 84 | 2/5/2026 |
| 0.9.0 | 85 | 2/5/2026 |
| 0.8.0 | 86 | 2/3/2026 |