Condividi tramite


sp_unbindrule (Transact-SQL)

Si applica a: SQL Server

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

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È consigliabile creare definizioni predefinite usando la parola chiave DEFAULT nelle istruzioni ALTER TABLE o CREATE TABLE .

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @objname = ] N'objname'

Nome della tabella e della colonna o del tipo di dati alias da cui la regola non è associato. @objname è nvarchar(776), senza impostazione predefinita. SQL Server tenta prima di tutto di risolvere gli identificatori in due parti nei nomi di colonna, quindi nei 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

@objname può contenere parentesi quadre [] come caratteri identificatori delimitati. Per altre informazioni, vedere Identificatori di database.

[ @futureonly = ] 'futureonly'

Utilizzato solo quando si annulla l'associazione di una regola da un tipo di dati alias. @futureonly è varchar(15), con il valore predefinito NULL. Quando @futureonly è futureonly, le colonne esistenti di quel tipo di dati non perdono la regola specificata.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

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

Quando una regola non è associata, le informazioni sull'associazione vengono rimosse dalla sys.columns tabella se la regola è stata associata a una colonna e dalla sys.types tabella se la regola è stata associata a un tipo di dati alias.

Quando una regola non è associato da un tipo di dati alias, è anche unbound da qualsiasi colonna con tale tipo di dati alias. La regola potrebbe anche essere associata a colonne i cui tipi di dati sono stati successivamente modificati dalla clausola ALTER COLUMN di un'istruzione ALTER TABLE, è necessario scollegare specificamente la regola da queste colonne utilizzando sp_unbindrule e specificando il nome della colonna.

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

R. Annullare l'associazione 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. Annullare l'associazione 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. Usare 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. Usare identificatori delimitati

Nell'esempio seguente viene illustrato l'uso di identificatori delimitati nel parametro @objname . Si noti il punto come parte del nome della tabella. sp_bindrule Nella parte l'oggetto contiene due punti, il primo fa parte del nome della tabella e il secondo distingue il nome della tabella dal nome della colonna.

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