Наш продукт загружает данные из файлов CSV в различные таблицы через класс .NET System.Data.SqlClient.SqlBulkCopy. После успешной загрузки все данные старше определенной метки времени удаляются из базы данных. Это делается путем выполнения следующей команды до тех пор, пока строки не будут удалены:
DELETE TOP (100000) FROM DBO.TBL_DDBB WHERE MeasureDateTime < CAST('2020/04/05 00:00:00' as datetime)
Это прекрасно работает с таблицами в формате RowStore, но при выполнении этой команды на таблице с индексом ColumnStore мы получаем следующую ошибку:
Не удается вставить повторяющуюся ключевую строку в объект «dbo.deleted_bitmap» с уникальным индексом «tuple_key». Повторяющееся значение ключа (98, 0). Оператор был завершен.
Проблема воспроизводится для нескольких таблиц в формате ColumnStore на этом компьютере с SQL Server, но не на других имеющихся у нас серверах SQL.
Я не могу понять, почему это происходит, и я не могу найти ничего в Интернете, где бы упоминалась эта ошибка. Кто-нибудь видел это раньше или может кто-нибудь сказать мне, как предотвратить это?
Информация о версии используемого SQL Server:
Microsoft SQL Server 2016 (SP2-CU12) (KB4536648) — 13.0.5698.0 (X64)
15 февраля 2020 г. 01:47:30 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) на Windows Server 2012 R2 Standard 6.3 (Сборка 9600:) (Гипервизор)