usa tutorial sobre que para instalar index funciona elastic crear como comandos sql sql-server-2008 alias synonym

tutorial - ¿Cómo crear Sql Sinónimo o "Alias" para el nombre de la base de datos?



todo sobre elasticsearch (4)

Estoy usando ms sql 2008 e intento crear un nombre de base de datos que haga referencia a otra base de datos. Por ejemplo, ''Dev'', ''Test'', ''Demo'' serían nombres de bases de datos a los que podría hacer referencia desde mis múltiples archivos de configuración, pero cada nombre apuntaría a otra base de datos como ''db20080101'' o ''db20080114''.

[Editar] Algunas de las configuraciones son para aplicaciones que yo controlo el código y otras no (por ejemplo, configuración de archivo de fuente de datos del servicio MS Reporting) [/ Edit]

Parece que sqlserver solo admite sinónimos para View, Table, Sproc o Function. Y Alias ​​''son para nombres de tabla y columna.

¿Hay alguna manera de hacer esto que me perdí en los documentos? ¿Alguien tiene alguna sugerencia sobre una solución alternativa?


He hecho algo similar a esto usando otro archivo de configuración.

El nuevo archivo de configuración correlaciona su nombre genérico con toda la información necesaria para conectarse a esa base de datos (nombre db, nombre de usuario, contraseña, etc.) y luego su función de conexión toma su nombre genérico como argumento.

db.config:

DEV_DB_NAME = db20080101 DEV_DB_USER = dev_user DEV_DB_PASS = dev_pass TEST_DB_NAME = db20070101 TEST_DB_USER = test_user TEST_DB_PASS = test_pass

código de conexión:

db_connection get_connection(string prefix) { db_connection db_conn = new db_connection; string db_name = get_config_value(config_path, prefix + "_DB_NAME"); string db_user = get_config_value(config_path, prefix + "_DB_USER"); string db_pass = get_config_value(config_path, prefix + "_DB_PASS"); db_conn.connect(db_name, db_user, db_pass); return db_conn; }

Luego, simplemente llame a get_connection () con su alias db como argumento.


use notación de 3 partes y alias hasta la tabla, ejemplo

select * from tempdb.dbo.sysobjects a join master.dbo.sysobjects b on a.id = b.id


Hay una manera de simular esto usando un servidor vinculado. Esto supone que tiene dos servidores SQL con el mismo conjunto de bases de datos, uno para desarrollo / prueba y otro en vivo.

  1. Abra SQL Server Management Studio en su servidor de desarrollo / prueba
  2. Haga clic derecho en Objetos del Servidor> Servidores Vinculados
  3. Seleccione Nuevo servidor vinculado ...
  4. Seleccione la página General
  5. Especifique el nombre de alias en el campo Servidor vinculado: este sería normalmente el nombre de su servidor en vivo
  6. Seleccione SQL Native Client como proveedor
  7. Ingrese sql_server para el nombre del producto
  8. En origen de datos, especifique el nombre del servidor de desarrollo
  9. Agregue opciones de seguridad y servidor al gusto
  10. Haga clic en Aceptar

Lo anterior es para SQL Server 2005 pero debería ser similar para 2008

Una vez que haya hecho eso, puede escribir SQL de esta manera:

SELECT * FROM liveservername.databasename.dbo.tablename

Ahora, cuando las secuencias de comandos se ejecutan en el servidor de desarrollo con el servidor vinculado de nuevo a sí mismos, funcionarán correctamente extrayendo datos del servidor de desarrollo y, cuando se ejecuten exactamente los mismos guiones en el servidor en vivo, funcionarán normalmente.


Sé que esto probablemente no ayudará en todas las situaciones, pero aún tienes la opción de usar vistas. Puede insertar, eliminar, actualizar, seleccionar en una vista, siempre que tenga una clave de identidad adecuada (clave principal). Si lo dirige a otra base de datos, debe soltar y volver a crear para obtener el esquema diferente (en caso de que esté trabajando entre producción y prueba mientras realiza cambios en el esquema en prueba y / o producción).

Los sinónimos son útiles para cuando va a otra base de datos y tiene un nombre de 3 o 4 partes, pero cuando quiere hacerlo para que pueda tener un nombre de conjunto, también funcionará un servidor vinculado que le permitirá usar un nombre fijo si los nombres de la tabla son los mismos en ambas bases de datos y solo señala entre prod y test.