¿Cómo mejorar mis conexiones a sql server vía remota mediante orígenes de datos?

Soy principiante en el tema de las bases de datos sql y trabajo para una empresa que apenas lleva un año implementando sistemas, sin embargo, hasta hoy, tenemos una base de datos de más de 2gb de información de ventas.

Últimamente he estado consultado la información de ventas mediante un orígen de datos de windows vinculado a la ip pública de la pc servidor, me aparecen las bases de datos montadas en sql server, sin embargo, al consultar la información tarda demasiado tiempo en mostrar un reporte, y quisiera saber cómo puedo hacer para mejorar la conexión remota.

Para consulta de datos utilizo access 2010, las querys están en la aplicación access de mi laptop y no en el servidor, solamente vinculo las tablas de datos de la base de datos sql del servidor mediante orígenes de datos (datos externos en access 2010). La pc servidor tiene instalado Windows Server 2003 y el servidor de base de datos sql es SQL server 2008 r2, como dije la base de datos mide más de dos gb.

Si alguien pudiera asesorarme les estaré muy agradecido.

2 Respuestas

Respuesta
1

De todas maneras, al conectarse por ip pública todo dependerá más que nada del internet. Todo depende de muchos factores, por ejemplo:

-La potencia de tu servidor: hp, ibm, ghz, ram, inclusive la capacidad del disco duro.

-Es importante también, ya que usa sql server 2008, que uses la versión de 64 bits.

-Tu diagrama de bd, tus tablas bien normalizadas y obviamente relacionadas correctamente.

-Tus consultas bien hechas. Cerciórate que localmente, tus consultas te responden rápidamente.

-La linea de internet que tengas, sobre todo el del cliente.

-Tu sala de servidores con un buen disipador de calor. No dejes de lado que todo equipo baja su rendimiento a raíz del calor en sus circuitos.

De todas maneras te recomiendo qué uses una conexión directa, pues con orígenes de datos estás haciendo un puente y los datos tienen que pasar por otra capa más y obviamente es más lento.

También puedes borrar los log de tu bd de vez en cuando, los log crecen desmesuradamente con las transacciones.

Si me das las características de tu server y también un indicio de cuanto se demora tu reporte localmente, puedo darte consejos mas certeros.

Bien, gracias por los tips...
El server, como mencioné en la pregunta inicial, es una PC normal un poco potente, sus características son: Procesador Intel Core(TM2) Quad CPU Q8400 @ 2.66Ghz, Ram 4GB, Sistema operativo de 64 bits y la tarjeta de red es una PCI que utilizaría cualquier computadora normal.
La base de datos, es de un programa que el dueño adquirió antes de contratarme (asimismo el programa de facturación) por lo que solamente tengo ideas de como está estructurada (ya que la copia de la bd que le dieron al dueño tiene muchas vistas y tablas basura).

Me queda claro que no es el escenario más adecuado para hacer consultas de datos vía access, sin embargo, apenas me estoy iniciando en el campo de la programación y esa ha sido la forma más sencilla que he encontrado. Las consultas de datos locales con tablas de datos vinculadas tardan hasta 10min en ejecutarse (las más complejas) probablemente por la cantidad de datos que consulta de sql que en access son demasiados.
Tengo una duda con respecto a tu respuesta, mencionaste de hacer una conexión directa sin usar orígenes de datos, ¿puedes orientarme como hacer eso? es decir, ¿cómo hacer una conexión directa vía internet? (dame solamente la teoría, ya que aunque no maneje la práctica, me servirá para orientarme y saber por donde investigar).

Gracias !!!!

Te diría que las características de tu server están correctos, pero también depende de la concurrencia, cantidad de transacciones y consultas de tu server. Fíjate en el rendimiento en el administrador de tareas de tu server. De todas maneras tienes una bd de 2gb y debes de tener tablas con más de 100000 registros.

También, corroborando la cantidad de registros que tiene tu bd, no te será fiable trabajar con access, pues de todas maneras no está que lo soporta.

Siendo así, deberás trabajar con sql server, lo instalas en tu pc cliente y te conectas con el usuario y obviamente con la ip pública.

Ahora, lo que no has verificado es si esa consulta que te demora 10min, también demora cuando se ejecuta dentro de la red de tu servidor, ten en cuenta que si una consulta se demora más de 1 segundo, es muy probable que no esté bien armado el reporte.

Un consejo, debes tener cuidado cuando tu base de datos tiene salida a internet, se hace vulnerable a ataques de terceros. Sería más seguro trabajarlo por vpn o virtualisando tu aplicación, como por ejemplo vmware o citrix.

Respuesta

Lo mejor es que ejecutes SQL SERVER PROFILER en el servidor y mires lo que tardan en ejecutarse las SQL.

Después puede optimizar la base de datos, creando índices, que el propio servidor te puede proponer crear.

En cualquier caso, estoy casi seguro que el problema es de comunicación, es decir, INTERNET, tendrás que contratar un ancho de banda mas grande si quieres mejorar, y aún así, dudo que llegues a obtener la velocidad que quieres.

Calcula el número de registros que recuperar, la cantidad de datos que ocupa cada uno, multiplica y luego piensa cuanto tarda eso en 'descargarse' desde tu servidor.

En las SQL no hagas select *, sino select campo1, campo2, es decir, intenta reducir al máximo los campos que recuperar, al objetivo debe ser reducir el tamaño de los datos recuperados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas