Compartir a través de


sp_unbindrule (Transact-SQL)

Se aplica a: SQL Server

Deshace el enlace de una regla de una columna o de un tipo de datos del alias en la base de datos actual.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Se recomienda crear definiciones predeterminadas mediante la palabra clave DEFAULT en las instrucciones ALTER TABLE o CREATE TABLE en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_unbindrule
    [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Argumentos

[ @objname = ] N'objname'

Nombre de la tabla y columna o el tipo de datos de alias desde el que la regla está desenlazada. @objname es nvarchar(776), sin ningún valor predeterminado. SQL Server intenta resolver primero los identificadores de dos partes en los nombres de columna y, después, en los tipos de datos de alias. Cuando se deshace el enlace de una regla de un tipo de datos de alias, también se deshace el enlace de las columnas de ese tipo de datos que tengan la misma regla. Las columnas de ese tipo de datos con reglas directamente enlazadas a ellas no se ven afectadas.

Nota:

@objname pueden contener corchetes [] como caracteres de identificador delimitados. Para obtener más información, consulte Identificadores de base de datos.

[ @futureonly = ] 'futureonly'

Solo se usa al desenlace de una regla de un tipo de datos de alias. @futureonly es varchar(15), con un valor predeterminado de NULL. Cuando @futureonly es futureonly, las columnas existentes de ese tipo de datos no pierden la regla especificada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Para mostrar el texto de una regla, ejecute sp_helptext con el nombre de la regla como parámetro .

Cuando una regla no está enlazada, la información sobre el enlace se quita de la sys.columns tabla si la regla estaba enlazada a una columna y de la sys.types tabla si la regla estaba enlazada a un tipo de datos de alias.

Cuando una regla se desenlaza de un tipo de datos de alias, también se desenlaza de cualquier columna que tenga ese tipo de datos de alias. La regla también podría estar enlazada a columnas cuyos tipos de datos se cambiaron posteriormente mediante la cláusula ALTER COLUMN de una instrucción ALTER TABLE, debe desenlace específicamente la regla de estas columnas mediante sp_unbindrule y especificando el nombre de columna.

Permisos

Para deshacer el enlace de una regla de una columna de tabla es necesario el permiso ALTER para la tabla. Para deshacer el enlace de una regla de un tipo de datos de alias es necesario el permiso CONTROL para el tipo o el permiso ALTER para el esquema al que pertenece el tipo.

Ejemplos

A Desenlace una regla de una columna

En el siguiente ejemplo se deshace el enlace de la columna startdate de una tabla employees.

EXEC sp_unbindrule 'employees.startdate';

B. Desenlace una regla de un tipo de datos de alias

En el siguiente ejemplo se deshace el enlace de la regla del tipo de datos de alias ssn. Deshace el enlace de la regla de las columnas de ese tipo existentes y futuras.

EXEC sp_unbindrule ssn;

C. Uso de futureonly_flag

En el siguiente ejemplo se deshace el enlace de la regla del tipo de datos de alias ssn sin afectar a las columnas ssn existentes.

EXEC sp_unbindrule 'ssn', 'futureonly';

D. Uso de identificadores delimitados

En el ejemplo siguiente se muestra el uso de identificadores delimitados en el parámetro @objname . Observe el punto como parte del nombre de la tabla. En la sp_bindrule parte, el objeto contiene dos puntos; la primera forma parte del nombre de la tabla y la segunda distingue el nombre de la tabla del nombre de la columna.

CREATE TABLE [t.4] (c1 int);
GO
CREATE RULE rule2 AS @value > 100;
GO
EXEC sp_bindrule rule2, '[t.4].c1'
GO
EXEC sp_unbindrule '[t.4].c1';