¿Cuál es el uso de SYNONYM en SQL Server 2008?¿Cuál es el uso de SYNONYM en SQL Server 2008?
Respuesta
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.
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 .
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.
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).
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 Employee
Server2
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.
¿El uso de sinónimos tiene algún efecto sobre el rendimiento cuando se accede a un servidor remoto? –
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 ...
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.
- 1. SQL Server 2008 Alto uso de CPU
- 2. Uso de "Con cláusula" SQL Server 2008
- 3. ¿Qué es SID en SQL SERVER 2008?
- 4. El uso de PIVOT en SQL Server 2008
- 5. ¿Cuál es el uso del operador "&" en SQL SERVER
- 6. Uso correcto de transacciones en SQL Server 2008
- 7. Sql Server 2008 - Dejar caer un sinónimo
- 8. SQL Server 2008 a SQL Server 2005
- 9. SQL Server 2008 el rendimiento de FILESTREAM
- 10. SQL Server 2008 'sp_syspolicy_purge_history' Función
- 11. ¿Cuál es el número máximo de columnas permitido en la vista de SQL Server 2008?
- 12. Linking Server en SQL Server 2008 R2
- 13. ¿Cuál es el uso de GO en SQL Server Management Studio & Transact SQL?
- 14. LPAD en SQL Server 2008
- 15. ¿Cuál es la diferencia entre el inicio de sesión y la credencial en SQL Server 2008?
- 16. Visual Studio 'SQL Server 2008 Server Project' contra 'Sql Server 2008 Database project'?
- 17. Uso de ODBC para conectar con SQL SERVER 2008
- 18. ¿Cuál es el uso de los corchetes [] en sentencias sql?
- 19. Actualizar SQL Server 2008 a 2008 R2
- 20. SQL Server 2008 CTE Recursion
- 21. Uso de SQL Server 2008 R2 con Visual Studio Express
- 22. SQL Server 2008 compatibilidad con SQL Server 2005
- 23. Uso de SQL Server 2008 y SQL Server 2005 y fecha y hora
- 24. SQL Server 2008 a SQL Server Compact Edition?
- 25. Algunas preguntas sobre HierarchyId (SQL Server 2008)
- 26. Android con SQL Server 2008
- 27. SQL Server 2008 y HashBytes
- 28. SQL Server 2008 - HashBytes columna
- 29. Migrando de Postgres a SQL Server 2008
- 30. SQL Server 2008: reemplazar cadena
¿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
@ivorykoder No. Por lo que sé, esa sintaxis no funcionará. – FistOfFury
¿El uso de sinónimos tiene algún efecto sobre el rendimiento al acceder a un servidor remoto? –