List of all missing order numbers that are not in the table
First create an auxiliary numbers table larger than the maximum range you will ever be interested in.
CREATE TABLE dbo.Numbers
(
N INT primary key
);
WITH E00(N) AS (SELECT 1 UNION ALL SELECT 1),
E02(N) AS (SELECT 1 FROM E00 a, E00 b),
E04(N) AS (SELECT 1 FROM E02 a, E02 b),
E08(N) AS (SELECT 1 FROM E04 a, E04 b),
E16(N) AS (SELECT 1 FROM E08 a, E08 b),
E32(N) AS (SELECT 1 FROM E16 a, E16 b),
cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY N) FROM E32)
INSERT
INTO dbo.Numbers
SELECT TOP(100000) N
FROM cteTally
OPTION (MAXDOP 1);
Then the query is simple
DECLARE @Start INT = 9001
, @End INT = 9009
SELECT @Start + N - 1 AS ORDERNUMBER
FROM dbo.Numbers
WHERE N <= ( 1 + @End - @Start )
EXCEPT
SELECT [ORDERNUMBER]
FROM [dwdata].[dbo].[ORDERS]
ORDER BY [ORDERNUMBER] DESC