diff --git a/src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverTypeNames.cs b/src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverTypeNames.cs
index d4ba0417..bbebd080 100644
--- a/src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverTypeNames.cs
+++ b/src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverTypeNames.cs
@@ -53,6 +53,9 @@ public static class DriverTypeNames
/// Calculation pseudo-driver — tags computed by C# scripts over other tags' live values.
public const string Calculation = "Calculation";
+ /// Read-only SQL Server table/view poller — publishes columns as OPC UA variables.
+ public const string Sql = "Sql";
+
///
/// Every driver-type string declared above, for callers that need to enumerate
/// the full set (e.g. validation of an authored DriverType).
@@ -68,5 +71,6 @@ public static class DriverTypeNames
OpcUaClient,
Galaxy,
Calculation,
+ Sql,
];
}
diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriver.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriver.cs
index 4a1b5491..7c566ebe 100644
--- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriver.cs
+++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriver.cs
@@ -29,14 +29,12 @@ public sealed class SqlDriver
: IDriver, ITagDiscovery, IReadable, ISubscribable, IHostConnectivityProbe, IAsyncDisposable
{
///
- /// The driver-type string this driver registers under.
- /// Deliberately a local constant, not DriverTypeNames.Sql.
- /// DriverTypeNamesGuardTests asserts bidirectional parity between the constants and the
- /// driver factories actually registered in the process, so the constant may only be added in the
- /// same change that wires the factory (this task ships no factory — see the plan's Task 11, which
- /// adds DriverTypeNames.Sql and repoints this constant at it).
+ /// The driver-type string this driver registers under — , the single
+ /// source of truth the deploy pipeline stores in DriverInstance.DriverType and every dispatch
+ /// map keys by. Chained off the shared constant (Task 11 wired the factory + probe, so
+ /// DriverTypeNamesGuardTests' bidirectional-parity check is satisfied).
///
- public const string DriverTypeName = "Sql";
+ public const string DriverTypeName = DriverTypeNames.Sql;
/// Shown for a connection string that names no recognisable server.
private const string UnknownEndpoint = "(unknown sql endpoint)";
diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriverFactoryExtensions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriverFactoryExtensions.cs
index b1377fd5..ac7479e3 100644
--- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriverFactoryExtensions.cs
+++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Sql/SqlDriverFactoryExtensions.cs
@@ -29,12 +29,9 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Sql;
public static class SqlDriverFactoryExtensions
{
///
- /// The driver-type string this factory registers under.
- /// Chained off rather than DriverTypeNames.Sql:
- /// DriverTypeNamesGuardTests asserts bidirectional parity between the shared constants and the
- /// factories actually registered in the process, so the constant may only be added in the change that
- /// also wires this factory into the Host (the plan's Task 11, which repoints both at
- /// DriverTypeNames.Sql).
+ /// The driver-type string this factory registers under — chained off
+ /// , which is
+ /// .
///
public const string DriverTypeName = SqlDriver.DriverTypeName;
diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.Host/Drivers/DriverFactoryBootstrap.cs b/src/Server/ZB.MOM.WW.OtOpcUa.Host/Drivers/DriverFactoryBootstrap.cs
index 71b5d0b7..2687366e 100644
--- a/src/Server/ZB.MOM.WW.OtOpcUa.Host/Drivers/DriverFactoryBootstrap.cs
+++ b/src/Server/ZB.MOM.WW.OtOpcUa.Host/Drivers/DriverFactoryBootstrap.cs
@@ -18,6 +18,7 @@ using FocasProbe = Driver.FOCAS.FocasDriverProbe;
using OpcUaProbe = Driver.OpcUaClient.OpcUaClientDriverProbe;
using GalaxyProbe = Driver.Galaxy.GalaxyDriverProbe;
using CalculationProbe = Driver.Calculation.CalculationDriverProbe;
+using SqlProbe = Driver.Sql.SqlDriverProbe;
///
/// Wires every cross-platform driver assembly's Register(registry, loggerFactory)
@@ -122,6 +123,7 @@ public static class DriverFactoryBootstrap
services.TryAddEnumerable(ServiceDescriptor.Singleton());
services.TryAddEnumerable(ServiceDescriptor.Singleton());
services.TryAddEnumerable(ServiceDescriptor.Singleton());
+ services.TryAddEnumerable(ServiceDescriptor.Singleton());
return services;
}
@@ -146,6 +148,7 @@ public static class DriverFactoryBootstrap
Driver.Modbus.ModbusDriverFactoryExtensions.Register(registry, loggerFactory);
Driver.OpcUaClient.OpcUaClientDriverFactoryExtensions.Register(registry, loggerFactory, secretResolver);
Driver.S7.S7DriverFactoryExtensions.Register(registry);
+ Driver.Sql.SqlDriverFactoryExtensions.Register(registry, loggerFactory);
Driver.TwinCAT.TwinCATDriverFactoryExtensions.Register(registry);
}
}
diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj b/src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj
index dd7fbd9a..b3fc5bad 100644
--- a/src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj
+++ b/src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj
@@ -76,6 +76,7 @@
+
diff --git a/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests.csproj b/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests.csproj
index b89bfe91..325ef67f 100644
--- a/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests.csproj
+++ b/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests.csproj
@@ -34,6 +34,7 @@
+