Ensure a Row is unique on insert
I don't have access to SQL Server so I googled the syntax for generated columns, but there's probably syntax errors in here anyhow. The idea is to use a generated column that has a unique value (BatchNumber) whenever BatchComplete is not null, and a non-unique number (BatchId) otherwise:

CREATE TABLE BatchTable 
( BatchNumber INT IDENTITY(1,1) PRIMARY KEY 
, BatchID INT NOT NULL
, BatchComplete DATETIME2(2) NULL
, Active AS (CASE WHEN BatchComplete IS NULL 
                  THEN BatchID 
                  ELSE BatchNumber 
             END) PERSISTED
, CONSTRAINT ONLY_ONE_ACTIVE_AT_ATIME UNIQUE ( BatchID, Active )
);


If BatchComplete IS NULL then UNIQUE (BatchId, BatchId) must hold, i.e only one Active batch at a time.

If BatchComplete IS NOT NULL then UNIQUE (BatchId, BatchNumber) must hold, but BatchNumber itself is unique, so this will always be true.

As mentioned I can't test this, but you might be able to use the idea one way or another.