Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье документируется синтаксис определения правил безопасности на уровне строк (RLS ) в безопасности OneLake. Чтобы применить правило RLS к таблице, см. Создание и управление ролями безопасности OneLake.
Правила RLS используют синтаксис SQL, чтобы указать строки, которые может видеть пользователь. Синтаксис принимает форму SQL-оператора SELECT с правилами RLS, определёнными в этом WHERE пункте. Правила RLS поддерживают только подмножество SQL, определённое в этой статье. Запросы с некорректным синтаксисом RLS или синтаксисом RLS, не совпадающими с базовой таблицей, приводят к отсутствию строк пользователям или к ошибкам запроса в конечной точке SQL аналитики.
При написании выражений RLS учитывайте следующие лучшие практики:
- Избегайте расплывчатых или чрезмерно сложных выражений RLS.
- Сильно типизированные выражения с целочисленными или строковыми поисками, использующими «=», являются самыми безопасными и простыми для понимания.
- Используйте целочисленные столбцы для сортировки и операций «больше или меньше».
- Избегайте эквивалентов строк, если не знаете формат входных данных, особенно для символов Unicode или чувствительности к акцентам.
Безопасность на уровне строк оценивает строковые данные как нечувствительные к регистру, используя следующую сортировку для сортировки и сравнений: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.
Syntax
Максимальное количество символов в правиле безопасности на уровне строк — 1000.
Все правила безопасности на уровне строк принимают следующую форму:
SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}
Рассмотрим пример.
SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
| Заполнитель | Описание |
|---|---|
| {schema_name} | Название схемы, содержащей {table_name}. Если элемент поддерживает схемы, необходимо включить {schema_name}. |
| {table_name} | Название таблицы, к которой относится предикат RLS. Это значение должно точно совпадать с названием таблицы, иначе RLS не показывает строк. Используйте квадратные [] скобки, чтобы избежать названий таблиц со специальными символами. Например: SELECT * FROM [dbo].[Secret.Table]. |
| {column_level_boolean} | Логическое утверждение, содержащее следующие компоненты: * Название столбца: Название столбца в {table_name}, как оно встречается в схеме логарифма Дельта. Вы можете форматировать имена столбцов как {column_name}, либо {table_name}. {column_name}. * Оператор: один из поддерживаемых операторов , который оценивает имя столбца и значение в булевом значении. * Значение: статическое значение или набор значений для оценки по отношению к ним. Можно использовать одно или несколько логических выражений, разделенных И или ИЛИ. |
Поддерживаемые операторы
Правила безопасности на уровне строк поддерживают следующие операторы и ключевые слова:
| Operator | Описание |
|---|---|
= (равно) |
Возвращает значение true, если оба значения имеют один и тот же тип данных и являются точными совпадениями. |
<> (не равно); |
Вычисляется как true, если два значения имеют разные типы данных и не являются точными совпадениями. |
> (больше чем) |
Возвращает значение true, если значение столбца больше значения оценки. Для строковых значений этот оператор использует побитовое сравнение, чтобы определить, больше ли одна строка, чем другая. |
>= (больше или равно) |
Возвращает true, если значение столбца больше или равно значению сравнения. Для строковых значений этот оператор использует побитовое сравнение, чтобы определить, больше ли одна строка или равна другой. |
< (меньше) |
Равно истине, если значение в столбце меньше оцениваемого значения. Для строковых значений этот оператор использует побитовое сравнение, чтобы определить, меньше ли одна строка, чем другая строка. |
<= (меньше или равно) |
Принимает значение true, если значение столбца меньше или равно значению для сравнения. Для строковых значений этот оператор использует побитовое сравнение, чтобы определить, меньше ли одна строка или равна другой. |
IN |
Оценивается в true, если любое из значений для оценки имеет тот же тип данных и точно совпадает со значением столбца. |
NOT |
Возвращает значение true, если какое-либо из значений оценки отличается по типу данных или не является точным совпадением со значением столбца. |
AND |
Объединяет предыдущий и последующий оператор с помощью булевой операции AND. Оба утверждения должны быть истинными, чтобы весь предикат был истинным. |
OR |
Объединяет предыдущий и последующий оператор с помощью булевой операции OR. Одно из утверждений должно быть истинным, чтобы весь предикат считался истинным. |
TRUE |
Логическое выражение для истины. |
FALSE |
Логическое выражение для false. |
BLANK |
Пустой тип данных, который можно использовать с оператором IS. Например: row IS BLANK. |
NULL |
Тип нулевых данных, который можно использовать с оператором IS. Например: row IS NULL. |