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';