SqlCommandBuilder.DeriveParameters (команда) и IsNullable - PullRequest
1 голос
/ 12 апреля 2010

Я написал оболочку базы данных O / R, которая генерирует несколько методов оболочки для хранимых процедур, которые он считывает из базы данных.

Теперь мне нужно создать некоторый пользовательский код оболочки, если для входного параметра хранимого процесса по умолчанию установлено значение NULL. Проблема в том, что я получаю сохраненные параметры процедуры, используя:

SqlCommandBuilder.DeriveParameters(command)

и это не приносит значения параметров по умолчанию. Есть ли способ найти эти значения по умолчанию? Они хранятся где-нибудь в базе данных?

Кстати, я использую SQL Server 2008

Ответы [ 2 ]

1 голос
/ 12 апреля 2010

Для хранимых процедур T-SQL единственный способ сделать это - проанализировать определение процедуры из таблицы sys.sql_modules. Из BOL таблицы sys.parameters относительно столбца has_default_value:

1 = Параметр имеет значение по умолчанию.

SQL Server поддерживает только настройки по умолчанию значения для объектов CLR в этом каталоге Посмотреть; следовательно, этот столбец имеет значение 0 для объектов Transact-SQL. Чтобы просмотреть значение по умолчанию параметр в объекте Transact-SQL, запросить определение столбца Просмотр каталога sys.sql_modules или использование системная функция OBJECT_DEFINITION.

Вот статья того, кто написал функцию T-SQL, которая предположительно делает именно это: Определение значения по умолчанию для параметров хранимой процедуры.

0 голосов
/ 22 ноября 2010

По сути, класс sqlcommandbuilder автоматически генерирует команды из одной таблицы, которые используются для согласования изменений, внесенных в набор данных, с сервером sql.

...