2009-08-07 11 views

Respuesta

4

Parece (de here) crear un alias para otra tabla, para que pueda consultarlo fácilmente. Al igual que

select * from table longname as ln

pero permanente y omnipresente.

Editar: trabaja para funciones definidas por el usuario, objetos locales y remotos, no solo tablas.

5

Un ejemplo de la utilidad de este podría ser si tuviera un procedimiento almacenado en una base de datos Usuarios que necesitaba acceso a una tabla de clientes en otro servidor producción. Suponiendo que creó el procedimiento almacenado en la base de datos Usuarios, es posible que desee establecer en un sinónimo como el siguiente: USE Users; GO CREAR clientes SYNONYM PARA Offsite01.Production.dbo.Clients; GO

Ahora al escribir el procedimiento almacenado en lugar de tener que escribir que toda alias cada vez que accede a la tabla sólo puede utilizar el alias clientes. Por otra parte, si alguna vez cambia la ubicación o el nombre de la ubicación de la base de datos de producción todo lo que hay que hacer es modificar un sinónimo en lugar de tener que modificar todos los procedimientos almacenados que hacen referencia al servidor de edad .

Desde: http://blog.sqlauthority.com/2008/01/07/sql-server-2005-introduction-and-explanation-to-synonym-helpful-t-sql-feature-for-developer/

63

En algunos sistemas de la empresa, es posible que tenga que tratar con objetos remotos a través de la cual usted no tiene control. Por ejemplo, una base de datos mantenida por otro departamento o equipo.

Los sinónimos pueden ayudarlo a desacoplar el nombre y la ubicación del objeto subyacente de su código SQL. De esta forma, puede codificar contra una tabla de sinónimos, incluso si la tabla que desea se mueve a un nuevo servidor/base de datos o se renombra.

Por ejemplo, podría escribir una consulta como esta:

insert into MyTable 
(...) 
select ... 
from remoteServer.remoteDatabase.dbo.Employee 

pero entonces si el servidor o base de datos, esquema o tabla cambia impactaría mi código. En lugar de ello puedo crear un sinónimo para el servidor remoto y utilizar en su lugar el sinónimo:

insert into MyTable 
(...) 
select ... 
from EmployeeSynonym 

Si el objeto subyacente cambia de ubicación o el nombre, sólo tengo que actualizar mi sinónimo para que apunte al nuevo objeto.

http://www.mssqltips.com/sqlservertip/1820/use-synonyms-to-abstract-the-location-of-sql-server-database-objects/

+0

¿Puedo llegar a conocer el valor de identidad actual de la fila insertada usando la función así-> Seleccionar IDENT_CURRENT ('')? No quiero obtener el valor de identidad haciendo max (ID) de esa tabla. ¿Es posible? – ivorykoder

+0

@ivorykoder No. Por lo que sé, esa sintaxis no funcionará. – FistOfFury

+0

¿El uso de sinónimos tiene algún efecto sobre el rendimiento al acceder a un servidor remoto? –

3

En realidad se puede crear un sinónimo en una base de datos vacía y se refieren a un objeto en otra base de datos, y por lo tanto hacer que funcione como es debido a pesar de que está en una base de datos completamente vacío (además el sinónimo que usted creó, por supuesto).

11

Los sinónimos proporcionan una gran capa de abstracción, lo que nos permite utilizar nombres amigables y/o locales para tablas, vistas, procedimientos y funciones con nombres o tablas remotos.

Por ejemplo

Considere usted tiene la y dbschema como ABC y nombre de tabla como Employee y ahora lo que necesita para acceder a la tabla en su EmployeeServer2 para llevar a cabo una operación de consulta.

Así que tiene que usar como Server1.ABC.Employee expone todo ServerName, SchemaName y TableName.

En lugar de ello se puede crear un sinónimo enlace Create Synonym EmpTable for Server1.ABC.Employee

para que pueda acceder como Select * from Peoples p1 inner join EmpTable emp where emp.Id=p1.ID

por lo que da las ventajas de abstracción, Facilidad de cambio, escalabilidad.

Más tarde, si desea cambiar el nombre del servidor o el esquema o el nombre de la tabla, solo tiene que cambiar el sinónimo por sí solo y no hay necesidad de buscarlos todos y reemplazarlos.

Si lo utilizó, sentirá la verdadera ventaja del sinónimo. También se puede combinar con un servidor vinculado y proporcionar más ventajas para los desarrolladores.

+0

¿El uso de sinónimos tiene algún efecto sobre el rendimiento cuando se accede a un servidor remoto? –

4

He sido un desarrollador de Oracle desde hace mucho tiempo y estoy dando el salto a SQL Server.

Pero, otro gran uso para los sinónimos es durante el ciclo de desarrollo. Si tiene varios desarrolladores modificando el mismo esquema, puede usar un sinónimo para apuntar a su propio esquema en lugar de modificar directamente la tabla de "producción". Eso le permite hacer lo suyo y otros desarrolladores no se verán afectados mientras realiza modificaciones y depuración.

Estoy contento de ver esto en SQL Server 2008 ...

4

Un sinónimo es un objeto de base de datos que tiene los siguientes objetivos:

  • proporciona un nombre alternativo para otro objeto de base de datos, que se refiere como el objeto base, eso puede existir en un servidor local o remoto.
  • Proporciona una capa de abstracción que protege una aplicación cliente de los cambios realizados en el nombre o la ubicación del objeto base.

Nunca he necesitado el primero, pero el segundo problema es bastante útil.

msdn is your friend

Cuestiones relacionadas