Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Свойства конфигурации ошибок в кубах, секциях или объектах измерения определяют, как сервер отвечает при возникновении ошибок целостности данных во время обработки. Повторяющиеся ключи, отсутствующие ключи и значения NULL в ключевом столбце обычно вызывают такие ошибки, а запись, приводящую к ошибке, не будет добавлена в базу данных, можно задать свойства, определяющие, что происходит дальше. По умолчанию обработка останавливается. Однако во время разработки куба может потребоваться продолжить обработку при возникновении ошибок, чтобы можно было протестировать поведение куба с импортированными данными, даже если оно не завершено.
Этот раздел включает следующие подразделы:
Повторяющиеся ключи, приводящие к несогласованным связям (KeyDuplicate)
Изменение ограничения ошибки или действия ограничения ошибок
Порядок выполнения
Сервер всегда выполняет правила NULLProcessing перед правилами ErrorConfiguration для каждой записи. Важно понимать, что свойства обработки NULL, преобразующие значения NULL в нули, могут впоследствии привести к повторяющимся ошибкам ключа, если две или более записей ошибок имеют нулевое значение в ключевом столбце.
Поведение по умолчанию
По умолчанию обработка останавливается при первой ошибке, включающей ключевой столбец. Это поведение управляется ограничением ошибок, указывающим ноль в качестве количества разрешенных ошибок и директивы Stop Processing, которая сообщает серверу прекратить обработку при достижении предела ошибки.
Записи, запускающие ошибку, из-за значений NULL или отсутствующих или повторяющихся значений, преобразуются в неизвестный элемент или удаляются. Службы SQL Server Analysis Services не импортируют данные, которые нарушают ограничения целостности данных.
Преобразование в неизвестный элемент происходит по умолчанию из-за параметра ConvertToUnknown для KeyErrorAction. Записи, присвоенные неизвестному члену, помещаются в базу данных в качестве доказательства проблемы, которую можно будет изучить после завершения процесса.
Неизвестные члены исключены из рабочих нагрузок запросов, но они будут отображаться в некоторых клиентских приложениях, если для Параметра UnknownMember задано значение Visible.
Если вы хотите отслеживать, сколько значений NULL было преобразовано в неизвестный элемент, можно изменить свойство NullKeyConvertedToUnknown , чтобы сообщить об этих ошибках в журнале или в окне обработки.
Отмена возникает при ручном установке свойства KeyErrorAction в значение "ОтменитьRecord".
С помощью свойств конфигурации ошибок можно определить, как сервер реагирует при возникновении ошибки. Параметры включают остановку обработки немедленно, продолжить обработку, но остановить ведение журнала или продолжить обработку и ведение журнала ошибок. Значения по умолчанию зависят от серьезности ошибки.
Счётчик ошибок отслеживает количество возникших ошибок. При установке верхнего предела ответ сервера изменяется при достижении этого ограничения. По умолчанию сервер перестает обрабатывать после достижения ограничения. Ограничение по умолчанию равно 0, что приводит к остановке обработки первой ошибки, которая учитывается.
Ошибки высокого влияния, такие как отсутствующий ключ или значение NULL в поле ключа, должны быть устранены быстро. По умолчанию эти ошибки соответствуют поведению сервера ReportAndContinue , где сервер перехватывает ошибку, добавляет его в число ошибок, а затем продолжает обработку (за исключением ограничения ошибки равен нулю, поэтому обработка останавливается немедленно).
Другие ошибки создаются, но не учитываются или регистрируются по умолчанию (это параметр IgnoreError ), так как ошибка не обязательно представляет проблему целостности данных.
Количество ошибок зависит от параметров обработки NULL. Для атрибутов измерения параметры обработки NULL определяют, как сервер реагирует при обнаружении значений NULL. По умолчанию значения NULL в числовом столбце преобразуются в нули, а значения NULL в строковом столбце обрабатываются как пустые строки. Вы можете переопределить свойства NullProcessing, чтобы перехватывать значения NULL до их преобразования в ошибки KeyNotFound или KeyDuplicate. Дополнительные сведения см. в разделе "Ключи NULL" в измерении.
Ошибки регистрируются в диалоговом окне "Процесс", но не сохраняются. Вы можете указать имя файла журнала ошибок ключа для сбора ошибок в текстовом файле.
Свойства конфигурации ошибок
Существует девять свойств конфигурации ошибок. Пять используются для определения ответа сервера при возникновении определенной ошибки. Оставшиеся четыре касаются настроек обработки ошибок, включая максимально допустимое количество ошибок, что делать при достижении этого лимита, и следует ли сохранять их в журнале ошибок.
Ответ сервера на определенные ошибки
| Недвижимость | По умолчанию | Другие значения |
|---|---|---|
|
CalculationError Происходит при инициализации настроек ошибок. |
IgnoreError не ведет журнал ошибок и не считает их; обработка продолжается до тех пор, пока число ошибок не превысит максимальный предел. |
ReportAndContinue записывает и подсчитывает количество ошибок. ReportAndStop сообщает об ошибке и немедленно останавливает обработку независимо от предела ошибки. |
|
KeyNotFound Происходит, когда внешний ключ в таблице фактов не имеет соответствующего первичного ключа в связанной таблице измерений (например, таблица фактов Sales содержит запись с идентификатором продукта, который не существует в таблице измерений Product). Эта ошибка может возникать во время обработки секционирования или обработки измерений снофлакированных измерений. |
ОтчетAndContinue регистрирует и подсчитывает ошибку. |
ReportAndStop сообщает об ошибке и немедленно останавливает обработку независимо от предела ошибки. IgnoreError ни регистрирует, ни учитывает ошибку; обработка продолжается до тех пор, пока число ошибок находится ниже максимального предела. Записи, которые вызывают эту ошибку, по умолчанию преобразуются в неизвестный элемент, но можно изменить свойство KeyErrorAction, чтобы исключить их. |
|
ДублированиеКлюча Происходит при обнаружении повторяющихся ключей атрибутов в измерении. В большинстве случаев допустимо наличие повторяющихся ключей атрибутов, но эта ошибка сообщает вам о дубликатах, чтобы вы могли проверить наличие недостатков проектирования в измерении, которые могут привести к непоследовательным связям между атрибутами. |
IgnoreError не ведет журнал и не подсчитывает ошибки; обработка продолжается до тех пор, пока число ошибок находится в пределах максимального ограничения. |
ReportAndContinue регистрирует и подсчитывает ошибку. ReportAndStop сообщает об ошибке и немедленно останавливает обработку независимо от предела ошибки. |
|
NullKeyNotAllowed Возникает, когда установлена ошибка NullProcessing = в атрибуте измерения или когда в столбце ключа атрибута есть значения NULL, используемые для уникальной идентификации члена. |
ReportAndContinue фиксирует и подсчитывает ошибку. |
ReportAndStop сообщает об ошибке и немедленно останавливает обработку независимо от предела ошибки. IgnoreError не ведёт журнал и не считает ошибку; обработка продолжается до тех пор, пока количество ошибок не превышает максимально допустимое значение. Записи, которые активируют эту ошибку, по умолчанию преобразуются в неизвестного члена, но вы можете задать свойство KeyErrorAction, чтобы вместо этого удалить их. |
|
NullKeyПреобразованВНеизвестно Происходит при последующем преобразовании значений NULL в неизвестный элемент. Установка NullProcessing = ConvertToUnknown в атрибуте измерения приведет к возникновению этой ошибки. |
IgnoreError не регистрирует и не считает ошибку; обработка продолжается до тех пор, пока число ошибок остается ниже максимального предела. | Если вы считаете эту ошибку информационной, сохраните значение по умолчанию. В противном случае можно выбрать ReportAndContinue , чтобы сообщить об ошибке в окне обработки и подсчитать ошибку до предела ошибки. ReportAndStop сообщает об ошибке и немедленно останавливает обработку независимо от предела ошибки. |
Общие свойства
| Свойство | Значения |
|---|---|
| KeyErrorAction | Это действие, выполняемое сервером при возникновении ошибки KeyNotFound . Допустимые ответы на эту ошибку включают ConvertToUnknown или DiscardRecord. |
| KeyErrorLogFile | Это определяемое пользователем имя файла, которое должно иметь расширение .log файла, расположенное в папке, в которой у учетной записи службы есть разрешения на чтение и запись. Этот файл журнала будет содержать только ошибки, созданные во время обработки. Используйте средство записи полетов, если требуется более подробная информация. |
| KeyErrorLimit | Это максимальное количество ошибок целостности данных, которые сервер разрешает до сбоя обработки. Значение -1 указывает, что ограничения отсутствуют. Значение по умолчанию равно 0, что означает, что обработка останавливается после первой ошибки. Вы также можете задать для него целое число. |
| KeyErrorLimitAction | Это действие, выполняемое сервером, когда число ключевых ошибок достигло верхнего предела. При остановке обработки обработка завершается немедленно. При остановке ведения журнала обработка продолжается, но ошибки больше не сообщаются или считаются. |
Где задать параметры настройки ошибок
Используйте страницы свойств в SQL Server Management Studio после развертывания базы данных или в проекте модели в SQL Server Data Tools. Одни и те же свойства находятся в обоих инструментах. Вы также можете задать свойства конфигурации ошибок в файле msmdrsrv.ini, чтобы изменить значения по умолчанию сервера для конфигурации ошибок, а также в командах batch и Process , если обработка выполняется как скриптовая операция.
Конфигурацию ошибок можно задать для любого объекта, который можно обработать как автономную операцию.
Среда SQL Server Management Studio
В обозревателе объектов щелкните правой кнопкой Свойства одного из этих объектов: измерения, куба или раздела.
В разделе "Свойства" щелкните "Конфигурация ошибок".
Инструменты работы с данными SQL Server
В обозревателе решений дважды щелкните размерность или куб. ErrorConfiguration отображается в Свойствах в расположенной ниже панели.
Кроме того, для одного измерения щелкните правой кнопкой мыши измерение в обозревателе решений, выберите "Процесс" и выберите пункт "Изменить параметры " в диалоговом окне "Измерение процесса". Параметры конфигурации ошибок отображаются на вкладке "Ошибки ключей измерения".
Отсутствующие ключи (KeyNotFound)
Записи с отсутствующим значением ключа нельзя добавить в базу данных, даже если ошибки игнорируются или ограничение ошибки не ограничено.
Сервер создает ошибку KeyNotFound во время обработки секционирования, когда таблица на самом деле содержит значение внешнего ключа, но внешний ключ не имеет соответствующей записи в связанной таблице измерений. Эта ошибка также возникает при обработке связанных или снежинковых таблиц измерений, где запись в одном измерении указывает внешний ключ, который не существует в связанном измерении.
При возникновении ошибки KeyNotFound проблемная запись выделяется неизвестному члену. Это поведение управляется с помощью Key Action, установленного в ConvertToUnknown, чтобы вы могли просмотреть выделенные записи для дальнейшего изучения.
Пустые внешние ключи в таблице фактов (KeyNotFound)
По умолчанию значение NULL в столбце внешнего ключа таблицы фактов преобразуется в ноль. Предполагая, что ноль не является допустимым значением внешнего ключа, ошибка KeyNotFound регистрируется и учитывается в сторону предела ошибки, равного нулю по умолчанию.
Чтобы позволить обработке продолжаться, можно обработать значение null перед его преобразованием и проверкой на ошибки. Для этого установите для параметра NullProcessing значение Error.
Установка свойства NullProcessing для меры
В обозревателе решений SQL Server Data Tools дважды щелкните куб, чтобы открыть его в конструкторе кубов.
Щелкните правой кнопкой мыши меру в области "Меры" и выберите "Свойства".
В свойствах разверните узел Source для просмотра свойства NullProcessing . По умолчанию установлено Automatic, для элементов OLAP преобразует значения NULL в нули для полей, содержащих числовые данные.
Измените значение на Error , чтобы исключить все записи с пустым значением, избегая преобразования null-to-numeric (ноль). Это изменение позволяет избежать повторяющихся ошибок ключа, связанных с несколькими записями, содержащими ноль в ключевом столбце, а также избежать ошибокKeyNotFound, если внешний ключ с нулевым значением не имеет эквивалента первичного ключа в связанной таблице измерений.
Ключи NULL в измерении
Чтобы продолжить обработку, если значения NULL находятся во внешнем ключе в измерении snowflaked, сначала обработайте значения NULL, задав NullProcessing в KeyColumn атрибута измерения. Это отменяет или преобразует запись до возникновения ошибки KeyNotFound .
Существует два варианта обработки значений NULL для атрибута измерения:
Задайте NullProcessing=UnknownMember, чтобы распределить записи со значениями NULL на неизвестного элемента. Это создает ошибку NULLKeyConvertedToUnknown , которая игнорируется по умолчанию.
Задайте значение nullProcessing=Error , чтобы исключить записи со значениями NULL. Это создает ошибку NullKeyNotAllowed , которая регистрируется и учитывается в сторону ограничения ключевых ошибок. Для продолжения обработки можно задать свойство конфигурации ошибок на Null Key Not Allowed на IgnoreError.
Значения NULL могут быть проблемой для полей, не являющихся ключами, поскольку запросы многомерных выражений возвращают разные результаты в зависимости от того, интерпретируется ли значение NULL как нулевое или пустое. По этой причине службы SQL Server Analysis Services предоставляют параметры обработки null, которые позволяют заранее определить нужное поведение преобразования.
Установка свойства NullProcessing для атрибута измерения
В обозревателе решений SQL Server Data Tools дважды щелкните измерение, чтобы открыть его в конструкторе измерений.
Щелкните правой кнопкой мыши атрибут в области "Атрибуты" и выберите "Свойства".
В свойствах разверните KeyColumns , чтобы просмотреть свойство NullProcessing . По умолчанию для него задано значение Automatic , которое преобразует значения NULL в нули для полей, содержащих числовые данные. Измените значение на Error или UnknownMember.
Это изменение удаляет базовые условия, которые активируют KeyNotFound путем отмены или преобразования записи перед проверкой ошибок.
В зависимости от конфигурации ошибки любой из этих действий может привести к ошибке, сообщаемой и подсчитываемой. Возможно, потребуется настроить дополнительные свойства, такие как задание KeyNotFound в ReportAndContinue или KeyErrorLimit ненулевым значением, чтобы разрешить обработку продолжать, когда эти ошибки сообщаются и учитываются.
Повторяющиеся ключи, приводящие к несоответствующим связям (KeyDuplicate)
По умолчанию наличие дубликата ключа не останавливает обработку, но ошибка игнорируется, и из базы данных исключена повторяющаяся запись.
Чтобы изменить это поведение, установите KeyDuplicate в ReportAndContinue или ReportAndStop, чтобы сообщить об ошибке. Затем можно изучить ошибку, чтобы определить потенциальные недостатки в проектировании измерений.
Изменение ограничения ошибки или действия ограничения ошибок
Можно повысить лимит ошибок, чтобы разрешить больше ошибок во время обработки. Нет рекомендаций по повышению предела ошибок; Соответствующее значение будет отличаться в зависимости от вашего сценария. Ограничения ошибок указываются в качестве свойств KeyErrorLimit в свойствах ErrorConfiguration в SQL Server Data Tools или число ошибок на вкладке "Конфигурация ошибок" для свойств измерений, кубов или групп мер в SQL Server Management Studio.
После достижения ограничения ошибки можно указать, что обработка останавливается или останавливается ведение журнала. Например, предположим, что для действия задано значение StopLogging с ограничением ошибки 100. В 101-й ошибке обработка продолжается, но ошибки больше не регистрируются или учитываются. Действия с ограничением ошибок указываются в качестве свойств KeyErrorLimitAction в свойствах ErrorConfiguration в SQL Server Data Tools или в качестве действия On на вкладке "Конфигурация ошибок" для свойств измерений, кубов или групп мер в SQL Server Management Studio.
Установить путь к журналу ошибок
Вы можете указать файл для хранения сообщений об ошибках, связанных с ключами, которые передаются во время обработки. По умолчанию ошибки отображаются во время интерактивной обработки в окне процесса, а затем удаляются при закрытии окна или сеанса. Журнал будет содержать только сведения об ошибках, связанных с ключами, идентичным ошибкам, которые вы видите в диалоговых окнах обработки.
Ошибки записываются в текстовый файл и должны иметь расширение .log файла. Файл будет пустым, если не возникают ошибки. По умолчанию файл будет создан в папке DATA. Можно указать другую папку, если учетная запись службы Analysis Services может записывать в это расположение.
Следующий шаг
Определите, будут ли ошибки перестать обрабатываться или игнорироваться. Помните, что не учитывается только ошибка. Запись, вызвавшая ошибку, не игнорируется; она либо удаляется, либо преобразуется в неизвестного участника. Записи, которые нарушают правила целостности данных, никогда не добавляются в базу данных. По умолчанию обработка останавливается при возникновении первой ошибки, но это можно изменить, вызвав ограничение ошибки. В разработке кубов может быть полезно ослабить правила настройки ошибок, позволяя продолжить обработку данных, чтобы было с чем выполнять тестирование.
Определите, следует ли изменять поведение обработки null по умолчанию. По умолчанию значения NULL в строковом столбце обрабатываются как пустые значения, а значения NULL в числовом столбце обрабатываются как ноль.
См. также
Свойства журнала
Определение неизвестных элементов и свойств обработки NULL