Synonym

Perhaps a little known feature of SQL Server 2005 but it might come in handy when you are slowly changing your database to use schema's. Synonyms allow you to define an alias for your objects and this is very helpful when you are migrating to schema's.

By using synonyms you can change your object names while retaining your 'interface' to the application and this allows for a smoother and more phased migration.

A little example with a table but remember that this also works for stored procedures, functions, etc. and it is also possible to create synonyms for remote objects (linked server).

--Create a schema

CREATE SCHEMA SchemasRock
GO

--Create a table in the default schema

CREATE TABLE dbo.myTable
(ID int)
GO

--Insert a row

INSERT INTO dbo.myTable VALUES (1)

--Move the table to the new schema

ALTER SCHEMA SchemasRock TRANSFER dbo.myTable

--Insert another row (will fail!)

INSERT INTO dbo.myTable VALUES (2)

/*
Msg 208, Level 16, State 1, Line 1
Invalid object name 'dbo.myTable'.
*/

--Create a synonym to support 'old' table name

CREATE SYNONYM dbo.myTable FOR SchemasRock.myTable

--Insert another row

INSERT INTO dbo.myTable VALUES (2)

--Select the rows

SELECT * FROM dbo.myTable
SELECT * FROM SchemasRock.myTable

--Clean

DROP SYNONYM [dbo].[myTable]
DROP TABLE [SchemasRock].[myTable]
DROP SCHEMA [SchemasRock]

Published Monday, June 25, 2007 9:21 PM by WesleyB