Tengo un servidor (Windows Server Standard FE) y varios ps conectados en lan, el servidor tengo MSSQL (SQL Server 2008) y estoy desarrollando una aplicacion en C# la cual necesita conexion a la base de datos.
CitarERROR: Valor de tiempo de espera caducado. El periodo de tiempo de espera se agotó al intentar consumir la confirmación del protocolo de enlace previo al inicio de sesión. El motivo podría ser que se produjo un error en el protocolo de enlace o que el servidor no pudo responder a tiempo. El tiempo invertido al intentar conectarse a este servidor fue: [Previo al inicio de sesión] inicializacion=39077; protocolo de enlace=13.
En el servidor tengo permitido la conexion al equipo, además, del motor de base de datos, que podría estar pasando?
Me conecto desde Excel y entra normalmente, pero no puedo coger el mismo string de conexión porque contiene palabras reservadas.
Hola,
bueno, hubo un tiempo que tuve el mismo problema, y tan solo aumente el timeout a un valor grande, en el string de conexión, si es que usas "Data.SqlClient.SqlConnection":
Data Source=127.0.0.1;Initial Catalog=miBD;User ID=admin;Password=123;Connection Timeout=3000000;
Saludos
@Ari Slash, eso me funciono pero tarda demasiado en ejecutarse una query simple (insert), como podría corregirse? Hacerlo desde el motor de base de datos?
Tienes instalado el "SQL Server Management Studio" ?
Intenta probando las consultas en ese cliente, para ir descartando.
Si funciona rapido en ese cliente, puede ser la clase de conexión que estes utilizando, y podrias postearla. Si funciona igual de lento, en el mismo cliente, sobre tu nueva conexión, click derecho > monitor de actividad. Y se vera el uso de memoria y/o procesador, para saber si es la cantidad de registros de la consulta la que causa la lentitud, o el trabajo en si que requiera esta.
Es la misma que uso siempre y sólo esta vez me ha presentado este inconveniente,
this.Cnn = new SqlConnection("Data Source=xxx; Initial Catalog=DBAcceso; User Id=sa; Password=sa; Connection Timeout=0;");
this.Cnn.Open();
this.Cmd = new SqlCommand(Sql, this.Cnn);
this.Cmd.ExecuteNonQuery();
this.Cnn.Close();
Bueno tu conexión como dices, no tiene inconvenientes. La acabo de probar tal cual.
Intenta lo del SQL server Management Studio,
y ademas ejecutar el procedimiento del sistema "sys.sp_updatestats", que actualizara indexara tu Base de datos, si es que el problema va por ahi.
Espero comentarios.
Saludos.
No lo he solucionado, cada query tarda unos 10seg aprox en ejecutarse :-[
Algun Disparador tendra aquella tabla en la que realizas el insert?
No, la base de datos sólo tiene 2 tablas. A la tabla que consulto sólo tiene 1 registro.
Podrias postear la estructura de la tabla a la cual haces el insert. Y el insert mismo.
Es algo simple nada del otro mundo,
USE [DBAcceso]
GO
/****** Object: Table [dbo].[Acceso] Script Date: 07/07/2014 10:42:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Acceso](
[id] [int] IDENTITY(1,1) NOT NULL,
[idEmpleado] [int] NOT NULL,
[fechaIngreso] [datetime] NULL,
[fechaSalida] [datetime] NULL,
[estado] [tinyint] NOT NULL,
CONSTRAINT [PK_Actividad] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: ForeignKey [FK_Acceso_Empleado] Script Date: 07/07/2014 10:42:42 ******/
ALTER TABLE [dbo].[Acceso] WITH CHECK ADD CONSTRAINT [FK_Acceso_Empleado] FOREIGN KEY([idEmpleado])
REFERENCES [dbo].[Empleado] ([id])
GO
ALTER TABLE [dbo].[Acceso] CHECK CONSTRAINT [FK_Acceso_Empleado]
GO
¿Podría ser cuestión de tu red? ¿Algún firewall o antivirus? ¿Y si snifeas el trafico SQL solo para descartar cualquier problema de tu conexión?
USE [DBAcceso]
GO
/****** Object: Table [dbo].[Acceso] Script Date: 07/07/2014 10:42:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Acceso](
[id] [INT] IDENTITY(1,1) NOT NULL,
[idEmpleado] [INT] NOT NULL,
[fechaIngreso] [datetime] NULL,
[fechaSalida] [datetime] NULL,
[estado] [tinyint] NOT NULL,
CONSTRAINT [PK_Actividad] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: ForeignKey [FK_Acceso_Empleado] Script Date: 07/07/2014 10:42:42 ******/
ALTER TABLE [dbo].[Acceso] WITH CHECK ADD CONSTRAINT [FK_Acceso_Empleado] FOREIGN KEY([idEmpleado])
REFERENCES [dbo].[Empleado] ([id])
GO
ALTER TABLE [dbo].[Acceso] CHECK CONSTRAINT [FK_Acceso_Empleado]
GO
prueba quitando el "clustered" a "non-clustered".
CONSTRAINT [PK_Actividad] PRIMARY KEY CLUSTERED
y si quieres mantener el Clustered. Crea un index:
CREATE INDEX DBAcceso.index_Acceso
ON DBAcceso.Acceso (id)
Ni firewall, ni NONCLUSTERED! :-[
U.u
Y el index?
Cree por medio de código simple y nada, creo que es problema de la comunicación entre la aplicación y el motor de base de datos :-[
DROP DATABASE DBAcceso
CREATE DATABASE DBAcceso
USE DBAcceso
CREATE TABLE [dbo].[Empleado](
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[cedula] [varchar](20) NOT NULL,
[nombre] [varchar](50) NOT NULL,
[apellido] [varchar](50) NOT NULL,
[salario] [numeric](18, 0) NULL,
[estado] [tinyint] NOT NULL
)
CREATE TABLE [dbo].[Acceso](
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[idEmpleado] [int] NOT NULL,
[fechaIngreso] [datetime] NULL,
[fechaSalida] [datetime] NULL,
[estado] [tinyint] NOT NULL
)
Descargate el Sql server Management Studio, para descartar problemas del cliente o del servidor.
http://www.microsoft.com/es-cl/download/details.aspx?id=7593
Son 198.6 mb.
Cita de: Shell Root en 8 Julio 2014, 15:04 PM
Cree por medio de código simple y nada, creo que es problema de la comunicación entre la aplicación y el motor de base de datos :-[
DROP DATABASE DBAcceso
CREATE DATABASE DBAcceso
USE DBAcceso
CREATE TABLE [dbo].[Empleado](
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[cedula] [varchar](20) NOT NULL,
[nombre] [varchar](50) NOT NULL,
[apellido] [varchar](50) NOT NULL,
[salario] [numeric](18, 0) NULL,
[estado] [tinyint] NOT NULL
)
CREATE TABLE [dbo].[Acceso](
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[idEmpleado] [int] NOT NULL,
[fechaIngreso] [datetime] NULL,
[fechaSalida] [datetime] NULL,
[estado] [tinyint] NOT NULL
)
Yo estaba pensando justo esto porque dices que te funciona bien en el excel. ¿Cual es la query que estás corriendo en tu programa?
@Ari Slash ese ya lo tengo, como dije al inicio... He hecho esto por años, pero esta es la única vez que me presenta este problema.
@MinusFour, en excel es una SELECT a una tabla -sólo para ver la conexion-, y en mi aplicación es un pinche select básico..
string Sql = "SELECT id, nombre, apellido ";
Sql += "FROM Empleado ";
Sql += "WHERE estado = 1 AND cedula = '" + cedula + "'";
¿El servidor esta en el equipo o está en otro punto de la red? ¿Estás usando alguna DNS?
Es un servidor, mi pc es una "terminal", por asi decirlo.
DNS no!
Revisa sys.dm_exec_query_stats para ver cuanto tiempo tarda en procesar la query, busca por el CPU time.
Reinstala Windows mejor xD
EDIT:
Pensandolo bien, intenta hacer funcionar tu codigo, pero sin estar conectado a red alguna, ni wifi ni cable.
Te estas auto-referenciando, por 127.0.0.1? localhost? o tu ip lan o wan? nombre de equipo?
Caracteristicas de tu Servidor?
Esos pc's conectados en lan, son active directory?
Lo de reinstalar, ni loco jajajjaaja
Por la autoreferencia no creo porque no tengo el MSSQL interno, por otro lado si actualizo la información se ve reflejada en el servidor.
Cita de: Shell Root en 8 Julio 2014, 17:49 PM
Lo de reinstalar, ni loco jajajjaaja
Por la autoreferencia no creo porque no tengo el MSSQL interno, por otro lado si actualizo la información se ve reflejada en el servidor.
¿Y si ejecutas el programa de forma local en el servidor? Para descartar cualquier problema de red.
@MinusFour, tienes razón! cuando lo ejecuto directamente desde el servidor está responde en menos de 1 seg!
Ahora supondré que es problema de red? Todo el tiempo estuve trabajando por Wifi! Pero presenta el mismo problema si lo hago por cable!
Por fin luz al final del camino xD.
A lo mejor tu red tiene control de velocidad por Qos?
@Ari Slash NO!
Fuck! Es el Firewall del servidor! Tanto tiempo perdido para algo tan básico! Disculpad por vuestro tiempo, no habia pensando en ello. Por otro lado, como podría hacer para activar el servidor y que mi aplicación funcione correctamente? Sólo abrí el puerto y quedo OK!
Gracias @MinusFour y @Ari Slash :-*
Que raro, ¿Cómo es que se ejecutaba las consultas si el server estaba detrás de un firewall? :huh:
En fin! Que bueno que tengas ese problema resuelto.
wou que bien, y como dice MinusFour, es raro, no cuadra, bug?
Y lo ultimo, si puedes especificar version del windows server(ultimas actualizaciones cargadas), para averiguar sobre eso del firewall. ;D
Saludos