Как SQL Server определяет, допустимы ли хранимые процедуры для намерения приложения только для чтения?

Функция sys.dm_exec_describe_first_result_set_for_object принимает объект (например, хранимую процедуру) и определяет свойства первого набора результатов.

Есть ли аналогичная функция, которая может показать мне, является ли процедура «только для чтения», что может означать, что ее можно правильно использовать с ApplicationIntent=readonly в строке подключения?


person JoeGaggler    schedule 05.07.2017    source источник
comment
AFAIK, нет. Учтите, что процедуры могут содержать динамический SQL или быть вложенными, что затрудняет определение того, действительно ли процедура изменяет данные.   -  person Dan Guzman    schedule 06.07.2017
comment
@DanGuzman, я подумал, что если SQL Server знает, когда безопасно запускать процесс на вторичном сервере, доступном только для чтения, он может каким-то образом раскрыть эту информацию клиентам. Если applicationintent - это всего лишь подсказка, то мне интересно, почему я не хотел бы помещать его в каждую строку подключения в надежде, что сервер будет размещать вызовы только для чтения на вторичных серверах.   -  person JoeGaggler    schedule 06.07.2017


Ответы (1)


Интересный вопрос. SQL Server не помечает объекты как доступные только для чтения, что устанавливается на уровне прав пользователя. ApplicationIntent = readonly, похоже, имеет дело с ситуацией, когда вы используете группы доступности и обычно имеете реплику только для чтения для отчетов. Затем он будет направлен на этот сервер.

Намерение приложения только для чтения

person Jesse    schedule 05.07.2017