Jump to content


MENSAJE DE BIENVENIDA Foro vínculado con Twitter, más info aquí.

“El secreto para progresar es empezar por algún lugar. El secreto para empezar por algún lugar es fragmentar tus complejas y abrumadoras tareas de tal manera que queden convertidas en pequeñas tareas que puedas realizar y entonces simplemente comenzar por la primera.” - Mark Twain

Photo

Lanzar Query por RPC


  • Please log in to reply
1 reply to this topic

#1 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1059 posts
  • LocationMadrid

Posted 28 September 2011 - 22:05 PM

Dejo código de programita para lanzar queries por RPC para comprobar rendimiento de los servers de Bases de Datos desde un servidor distinto al RMS:

Imagen enviada

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Sql;

namespace RPCQuery
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                DateTime t1, t2; 
                int time=0;
                SqlDataReader resConsulta = null;
                SqlConnection conexionSQL = new SqlConnection();
                conexionSQL.ConnectionString = "Server=" + textBox1.Text + ";initial catalog=" + textBox2.Text + "; Trusted_Connection=TRUE";
                conexionSQL.Open();
                SqlCommand cmd = new SqlCommand("dbo.sp_executesql", conexionSQL);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@Statement", SqlDbType.NVarChar);
                cmd.Parameters["@Statement"].Value = richTextBox1.Text;
                t1 = DateTime.Now;
                resConsulta = cmd.ExecuteReader();
                t2 = DateTime.Now;
                time = t2.Minute * 60000 + t2.Second * 1000 + t2.Millisecond - (t1.Minute * 60000 + t1.Second * 1000 + t1.Millisecond);
                textBox3.Text = t1.Minute + ":" + t1.Second + ":" + t1.Millisecond + " - " + t2.Minute + ":" + t2.Second + ":" + t2.Millisecond + " Diff: " + time.ToString();
                resConsulta.Close();
                cmd.Dispose();
                conexionSQL.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#2 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1059 posts
  • LocationMadrid

Posted 27 October 2011 - 04:49 AM

IMPORTANTE DETALLE:

Comentar que el tiempo que podemos ver en una traza del evento RPC Completed, no tiene porqué ser exactamente el tiempo que tarda en realizarse la query. Mide el tiempo desde que el sistema remoto abré la conexión hasta que la cierra. Si metieramos un delay antes de cerrar la conexión en nuestro código, podríamos ver en una traza que la Duración del RPC Completed es el tiempo que nosotros fijemos en el delay + la query.
Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users