Informazioni sui sinonimi

Un sinonimo è un oggetto del database che viene utilizzato per gli scopi seguenti:

  • Fornisce un nome alternativo per un altro oggetto del database, definito oggetto di base, presente su un server locale o remoto.

  • Fornisce un livello di astrazione che consente di proteggere un'applicazione client dalle modifiche apportate al nome o alla posizione dell'oggetto di base.

Ad esempio, si consideri la tabella Employee di Adventure Works, che si trova sul server Server1. Per farvi riferimento da un altro server, Server2, un'applicazione client dovrebbe utilizzare il nome composto da quattro parti Server1.AdventureWorks.Person.Employee. Inoltre, se la tabella venisse spostata in un altro server, sarebbe necessario modificare l'applicazione client in modo da riflettere la modifica della posizione.

Per risolvere entrambi i problemi, è possibile creare su Server2 il sinonimo EmpTable per la tabella Employee che si trova su Server1. Per fare riferimento alla tabella Employee, l'applicazione client dovrà quindi utilizzare unicamente il nome composto da una parte, EmpTable. Inoltre, se la posizione della tabella Employee viene modificata, per puntare alla nuova posizione della tabella Employee sarà necessario modificare il sinonimo, EmpTable. Poiché non esiste un'istruzione ALTER SYNONYM, è necessario innanzitutto eliminare il sinonimo, EmpTable, e quindi ricrearlo con lo stesso nome ma puntando alla nuova posizione della tabella Employee.

Un sinonimo appartiene a uno schema e, come gli altri oggetti di uno schema, deve avere un nome univoco. È possibile creare sinonimi per gli oggetti di database seguenti:

Stored procedure assembly (CLR)

Funzione valutata a livello di tabella assembly (CLR)

Funzione scalare assembly (CLR)

Funzioni di aggregazione assembly (CLR)

Procedura di filtro della replica

Stored procedure estesa

Funzione scalare SQL

Funzione valutata a livello di tabella SQL

Funzione valutata a livello di tabella inline SQL

Stored procedure SQL

Vista

Tabella1 (definita dall'utente)

1 Include tabelle temporanee locali e globali

[!NOTA]

I nomi composti da quattro parti non sono supportati per gli oggetti funzione di base.

Un sinonimo non può essere l'oggetto di base di un altro sinonimo e non può fare riferimento a una funzione di aggregazione definita dall'utente.

L'associazione tra un sinonimo e il relativo oggetto di base avviene unicamente in base al nome. Tutti i controlli relativi all'esistenza, al tipo e alle autorizzazioni per l'oggetto di base sono rimandati alla fase di esecuzione. L'oggetto di base può pertanto essere modificato, eliminato o eliminato e sostituito da un altro oggetto con lo stesso nome dell'oggetto di base originale. Si consideri, ad esempio il sinonimo MyContacts che fa riferimento alla tabella Person.Contact di Adventure Works. Se la tabella Contact viene eliminata e sostituita da una vista denominata Person.Contact, il sinonimo MyContacts farà riferimento alla vista Person.Contact.

I riferimenti a sinonimi non sono associati a schemi e pertanto è possibile eliminare un sinonimo in qualsiasi momento. Se si elimina un sinonimo, si corre tuttavia il rischio di lasciare riferimenti inesatti al sinonimo eliminato, che verranno trovati solo in fase di esecuzione.

Sinonimi e schemi

Se è disponibile uno schema predefinito di cui non si è proprietari e si desidera creare un sinonimo, è necessario qualificare il nome del sinonimo con il nome dello schema di cui si è proprietari. Ad esempio, se si è proprietari di uno schema x, ma lo schema predefinito è y e si utilizza l'istruzione CREATE SYNONYM, è necessario anteporre al nome del sinonimo lo schema x, anziché assegnare al sinonimo un nome composto da una parte. Per ulteriori informazioni sulla creazione dei sinonimi, vedere CREATE SYNONYM (Transact-SQL).

Concessione delle autorizzazioni per un sinonimo

Le autorizzazioni per un sinonimo possono essere concesse unicamente dai proprietari del sinonimo, membri di db_owner o di db_ddladmin.

È possibile concedere, negare o revocare le autorizzazioni seguenti per un sinonimo:

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION