0% found this document useful (0 votes)
52 views

How and Why Should I Use SQL Server 2005 Synonyms

SQL Server 2005 introduces synonyms to provide aliases for objects like tables, views, stored procedures, and functions. This allows applications to reference an underlying object that is different than the original without requiring code changes. Synonyms simplify migrations and application testing. To create a synonym, use the SQL Server Management Studio interface or a T-SQL CREATE SYNONYM statement to define an alias and the object it references. Statements executed against the synonym will affect the base object.

Uploaded by

yyingwon
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

How and Why Should I Use SQL Server 2005 Synonyms

SQL Server 2005 introduces synonyms to provide aliases for objects like tables, views, stored procedures, and functions. This allows applications to reference an underlying object that is different than the original without requiring code changes. Synonyms simplify migrations and application testing. To create a synonym, use the SQL Server Management Studio interface or a T-SQL CREATE SYNONYM statement to define an alias and the object it references. Statements executed against the synonym will affect the base object.

Uploaded by

yyingwon
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 5

How and why should I use SQL Server 2005 synonyms?

Problem
Changing the name of an table once an application has been deployed has
traditionally been a difficult task in SQL Server 2000. The typical solution in SQL
Server 2000 for referencing a different object was to use a View. A second option
was to use the sp_rename system stored procedure to rename objects as needed.
Unfortunately, this limits the capabilities of referencing other objects. The need to
be able to reference another object can become critical during system migrations,
application testing, data corruption, etc. Does SQL Server 2005 handle this in a
more elegant manner and support more than just tables?

Solution
SQL Server 2005 has introduced synonyms which enables the reference of another
object (View, Table, Stored Procedure or Function) potentially on a different server,
database or schema in your environment. In short, this means that the original
object that is referenced in all of your code is really using a completely different
underlying object, but no coding changes are necessary. Think of this as an alias as
a means to simplify migrations and application testing without the need to make any
dependent coding changes.

How do I create a synonym via SQL Server 2005 Management Studio?

ID Directions Screen Shot


1 Launch GUI - Not applicable
To access the
synonym
interface
navigate to
SQL Server
2005
Management
Studio | Server
Name |
Databases |
Database
Name |
Synonyms |
Right click on
the Synonyms
folder | New
Synonym...
2 General Tab -
Complete the
Synonym
name which
should be a
new name in
the schema
followed by the
information for
the aliased
object
3 Permission
Tab - Click the
'Add' button to
grant rights to
the synonym
for specific
database users
4 Extended
Properties
Tab - Add any
extended
properties for
documentation
purposes

For more
information
visit - Using
Extended
Properties on
Database
Objects

How do I create a synonym via T-SQL?

USE [UserDefinedDatabase]
GO
CREATE SYNONYM [dbo].[Customer]
FOR [JTKNotebook].[JTKTest].[dbo].[Customer]
GO
EXEC sys.sp_addextendedproperty @name=N'Description', @value=N'This is a
sample synonym referencing the JTKTest database' ,
@level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'SYNONYM',@level1name=N'Customer'

How can I verify the statements issued against the synonym are affecting
the base object?

Issue an INSERT statement against the synonym:

INSERT INTO [BaltSSUG].[dbo].[Customer]


([CustID] ,[CustName] ,[CustAddress] ,[CustCity] ,[CustState] ,[CustZipCode])
VALUES (99 ,'DBA Dave' ,'123 Main Street' ,'Warren' ,'OH' ,12345)
Issue a SELECT statement on the synonym:

SELECT *
FROM [BaltSSUG].[dbo].[Customer]

1 AAA 123 Main Washington DC 11111


2 BBB 456 Main New York NY 22222
3 CCC 789 Main St. Louis MO 33333
4 DDD 123 Maple Denver CO 44444
5 EEE 456 Maple San Fran CA 55555
99 DBA Dave 123 Main Street Warren OH 12345

Can I still issue statements against the base object?

Issue an INSERT statement against the base table:

INSERT INTO [JTKTest].[dbo].[Customer]


([CustID] ,[CustName] ,[CustAddress] ,[CustCity] ,[CustState] ,[CustZipCode])
VALUES (100 ,'Developer Donna' ,'456 Main Street' ,'Chicago' ,'IL' ,67890)

Issue a SELECT statement on the base table:

SELECT *
FROM [JTKTest].[dbo].[Customer]

1 AAA 123 Main Washington DC 11111


2 BBB 456 Main New York NY 22222
3 CCC 789 Main St. Louis MO 33333
4 DDD 123 Maple Denver CO 44444
5 EEE 456 Maple San Fran CA 55555
99 DBA Dave 123 Main Street Warren OH 12345
100 Developer Donna 456 Main Street Chicago IL 67890

Next Steps

• As you begin to migrate to SQL Server 2005 consider synonyms as a means


to alias objects in your environment without the need to change the
dependent code.
• The next time you need to make significant code changes due to application
testing or a system migration and you are concerned about the level of effort
to support the changes, first test the synonym functionality to determine if
this will streamline the process and save time.
• Do not limit yourself to uses for the synonyms, consider other applications
such as in data warehousing when managing fact tables.
• Check out our recent testing related tips:
o Testing Options with SQL Server 2000 and 2005
o How and why would I use multiple instances of SQL Server
o SQL Server Comparison Tools

You might also like