sp_unbindrule (Transact-SQL)

Disassocia una regola da una colonna o da un tipo di dati alias nel database corrente.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire dalla prossima versione di Microsoft SQL Server. Non utilizzare questa caratteristica in un nuovo progetto di sviluppo e modificare non appena possibile le applicazioni in cui è attualmente implementata. È consigliabile creare definizioni predefinite utilizzando la parola chiave DEFAULT nell'istruzione ALTER TABLE o CREATE TABLE. Per ulteriori informazioni, vedere Creazione e modifica delle definizioni DEFAULT.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_unbindrule [ @objname = ] 'object_name' 
     [ , [ @futureonly = ] 'futureonly_flag' ]

Argomenti

  • [ @objname= ] 'object_name'
    Nome della tabella e della colonna o tipo di dati alias la cui regola viene disassociata. object_name è di tipo nvarchar(776) e non prevede alcun valore predefinito. SQL Server tenta innanzitutto di risolvere gli identificatori costituiti da due parti in nomi di colonne e quindi in tipi di dati alias. La disassociazione di una regola da un tipo di dati alias viene estesa anche alle colonne dello stesso tipo di dati a cui è applicata la regola. Non vengono tuttavia modificate le colonne di questo stesso tipo di dati a cui la regola è associata in modo diretto.

    [!NOTA]

    object_name può contenere parentesi quadre [] come caratteri delimitatori degli identificatori. Per ulteriori informazioni, vedere Identificatori delimitati (Motore di database).

  • [ @futureonly= ] 'futureonly_flag'
    Utilizzato solo per disassociare una regola da un tipo di dati alias. futureonly_flag è di tipo varchar(15) e il valore predefinito è NULL. Quando futureonly_flag è di tipo futureonly, la regola specificata non viene disassociata dalle colonne esistenti di tale tipo di dati.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Per visualizzare il testo di una regola, eseguire sp_helptext specificando il nome della regola come parametro.

Quando si disassocia una regola, le informazioni relative all'associazione vengono rimosse dalla tabella sys.columns se la regola è associata a una colonna oppure dalla tabella sys.types se la regola è associata a un tipo di dati alias.

Una regola disassociata da un tipo di dati alias viene disassociata anche dalle colonne a cui è applicato tale tipo di dati. La regola potrebbe tuttavia rimanere associata alle colonne in cui il tipo di dati è stato modificato successivamente tramite la clausola ALTER COLUMN di un'istruzione ALTER TABLE. È pertanto necessario disassociare la regola da queste colonne in modo esplicito tramite sp_unbindrule specificando il nome delle colonne.

Autorizzazioni

Per disassociare una regola dalla colonna di una tabella è necessaria l'autorizzazione ALTER sulla tabella. Per disassociare una regola da un tipo di dati alias è necessaria l'autorizzazione CONTROL sul tipo di dati o l'autorizzazione ALTER sullo schema a cui appartiene il tipo.

Esempi

A. Disassociazione di una regola da una colonna

Nell'esempio seguente la regola viene disassociata dalla colonna startdate di una tabella employees.

EXEC sp_unbindrule 'employees.startdate'

B. Disassociazione di una regola da un tipo di dati alias

Nell'esempio seguente la regola viene disassociata dal tipo di dati alias ssn. La disassociazione viene applicata alle colonne di questo tipo di dati, sia esistenti che create successivamente.

EXEC sp_unbindrule ssn

C. Utilizzo di futureonly_flag

Nell'esempio seguente la regola viene disassociata dal tipo di dati alias ssn senza influire sulle colonne ssn esistenti.

EXEC sp_unbindrule 'ssn', 'futureonly'

D. Utilizzo di identificatori delimitati

Nell'esempio seguente viene illustrato l'utilizzo di identificatori delimitati nel parametro 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'