SQL Server 2000 (и более поздние версии) не регистрирует автоматически запросы, которые генерируют простые ошибки «данных». Он будет регистрировать запросы, которые генерируют серьезные ошибки (например, RAISERROR уровня 20 и выше), и любые такие ошибки будут регистрироваться в журнале событий приложений Windows. Тем не менее, вполне вероятно, что то, что вызывает ваши игры, не будет вызывать такого рода ошибки, поскольку вы, вероятно, уже заметили другие проблемы.
Один из способов найти это действие, как сказал Чадхок, установить след для его отслеживания. Это делает более 20 серверов в течение [сколько?] Дней, а затем анализирует результаты, что считается нетривиальной задачей. (Я бы настроил первый проход с событиями Exception и, в зависимости от вашего приложения, одним из Batch Start, Start для хранимой процедуры или RPC.)
Другая тактика: вместо зеркальной таблицы, заполняемой «расширением» хранимых процедур, попробуйте триггер INSERT для таблицы, которая заполняет таблицу журнала. (Это будет перехватывать все вставки, а не только те, которые сделаны вашей хранимой процедурой.) Таблица журнала будет отслеживать идентификатор, время вставки и любую дополнительную информацию, которая может оказаться полезной (кто выполняет вход в систему, вызывающее приложение, любые другие данные быть полезным для отладки). Это может в конечном итоге выглядеть как зеркальный стол, но это не обязательно. Если пробелы все еще появляются, вы наверняка будете знать, что транзакции откатывались. (И помните, что если только этот первый оператор INSERT завершается неудачно и строка никогда не вставляется, он все равно «использует» значение идентификатора.)