sp_unbindrule (Transact-SQL)
Отменяет привязку правила к столбцу или псевдониму типа данных в текущей базе данных.
Важно! |
---|
В следующей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется. Вместо этого рекомендуется создавать определения по умолчанию с помощью ключевого слова DEFAULT в инструкциях ALTER TABLE или CREATE TABLE. Дополнительные сведения см. в разделе Изменение и создание определений DEFAULT. |
Синтаксис
sp_unbindrule [ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
Аргументы
[ @objname= ] 'object_name'
Имя таблицы и тип данных столбца или псевдонима, для которого отменяется привязка правила. Аргумент object_name имеет тип nvarchar(776) и не имеет значения по умолчанию. SQL Server пытается разрешить идентификаторы, состоящие из двух частей, сначала в имена столбцов, а затем в псевдонимы типов данных. При отмене привязки правила к псевдониму типа данных для всех столбцов этого типа данных, имеющих то же самое правило, также отменяется привязка. Столбцы этого типа данных с правилами, которые привязаны непосредственно к ним, не затрагиваются.Примечание Аргумент object_name может содержать квадратные скобки [] в качестве символов идентификатора с разделителем. Дополнительные сведения см. в разделе Идентификаторы с разделителями (компонент Database Engine).
[ @futureonly= ] 'futureonly_flag'
Используется только при отмене привязки правила к псевдониму типа данных. Аргумент futureonly_flag имеет тип varchar(15) и значение по умолчанию NULL. Если аргумент futureonly_flag имеет значение futureonly, то существующие столбцы этого типа данных не теряют указанного правила.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Для отображения текста правила выполните процедуру sp_helptext с именем правила в качестве аргумента.
При отмене привязки правила данные о ней удаляются из таблицы sys.columns, если правило было привязано к столбцу, и из таблицы sys.types, если правило было привязано к псевдониму типа данных.
Если отменяется привязка правила к псевдониму типа данных, то она отменяется и для всех столбцов, имеющих этот псевдоним. Правило может остаться привязанным к столбцами, типы данных которых были когда-то изменены с помощью предложения ALTER COLUMN инструкции ALTER TABLE. Для каждого такого столбца необходимо специально отменить привязку правила с помощью процедуры sp_unbindrule, указав имя столбца.
Разрешения
Чтобы отменить привязку правила к столбцу таблицы, требуется разрешение ALTER на таблицу. Чтобы отменить привязку правила к псевдониму типа данных, требуется разрешение CONTROL для типа или разрешение ALTER для схемы, которой тип принадлежит.
Примеры
А. Отмена привязки правила к столбцу
В следующем примере отменяется привязка правила к столбцу startdate таблицы employees.
EXEC sp_unbindrule 'employees.startdate'
Б. Отмена привязки правила к псевдониму типа данных
В следующем примере отменяется привязка правила к псевдониму типа данных ssn. Отмена производится как для существующих, так и для будущих столбцов этого типа.
EXEC sp_unbindrule ssn
В. Использование аргумента futureonly_flag
В следующем примере отменяется привязка правила к псевдониму типа данных ssn, не затрагивая существующие столбцы типа ssn.
EXEC sp_unbindrule 'ssn', 'futureonly'
Г. Использование идентификаторов с разделителями
В следующем примере показано использование идентификаторов с разделителями в аргументе object_name .
CREATE TABLE [t.4] (c1 int) -- Notice the period as part of the table
-- name.
GO
CREATE RULE rule2 AS @value > 100
GO
EXEC sp_bindrule rule2, '[t.4].c1' -- The object contains two
-- periods; the first is part of the table name and the second
-- distinguishes the table name from the column name.
GO
EXEC sp_unbindrule '[t.4].c1'