Tengo un pequeño problema que sinceramente no he sabido a que se debe....
Es lo siguiente:
Yo en mi aplicación tengo que hacer unas consultas a la base de datos que estoy haciendo de la siguiente manera:
Código:
DataSet dsTodo = new DataSet(); dsTodo = sesion.obtenerDataSet("spObtenerBusquedaLibrosTCampos", parametroBuscar); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro2)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro4)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro5)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro7)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro9)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro10)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro12)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaOMaterialesTCampos", parametro13)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaTesisTCampos", parametroBuscar)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaPeliculasTCampos", parametroBuscar)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaArchivosTCampos", parametroBuscar)); dsTodo.Merge(sesion.obtenerDataSet("spObtenerBusquedaSeriadasTCampos", parametroBuscar)); return dsTodo;
Cómo pueden ver son varias consultas que llevo a un mismo dataset, la cosa es que a cada consulta en el administrador corporativo de SQlServer 2000 les agrego una tabla por la cual también necesito hacer la consulta y en el Sql y en el analizador de consultas me funciona la consulta, es decir me muestra lo que me debe mostrar. Una de las consultas es cómo la siguiente:
Código:
CREATE PROCEDURE dbo.spObtenerBusquedaOMaterialesTCampos @CamposBuscar varchar(250), @IDTipoMaterial int AS DECLARE @NombreAutor VARCHAR(1000) DECLARE @NAutores varchar(250) DECLARE @IDLibro int DECLARE @IDLibro2 int DECLARE @NIDLibro int DECLARE @Clasif varchar(20) DECLARE @Clasif2 VARCHAR(20) DECLARE @IDTMat int DECLARE @IDTMat2 int DECLARE @LibAnt INT DECLARE @LibSig INT DECLARE @Titulo VARCHAR(250) DECLARE @Titulo2 VARCHAR(250) SET @NombreAutor = '' SET @NAutores = '' SET @Clasif2 = '' set @IDLibro2 = 0 SET @IDTMat2 = 0 CREATE TABLE #LibAut (IDLibro INT, Titulo VARCHAR(250), Autores VARCHAR(2000), Clasificacion VARCHAR(20), IDTipoMaterial INT) DECLARE Autores_Cursor CURSOR FOR SELECT TOP 300 dbo.OtrosMateriales.IDMaterial, dbo.OtrosMateriales.Titulo, dbo.Autores.Nombre + ' ' + dbo.Autores.Apellidos AS Autor, dbo.OtrosMateriales.Clasificacion, dbo.OtrosMateriales.IDTipoMaterial FROM Materias RIGHT OUTER JOIN dbo.OtrosMaterialesMaterias ON dbo.Materias.IDMateria = dbo.OtrosMaterialesMaterias.IDMateria RIGHT OUTER JOIN dbo.OtrosMateriales ON dbo.OtrosMaterialesMaterias.IDMaterial = dbo.OtrosMateriales.IDMaterial LEFT OUTER JOIN dbo.OtrosMaterialesAutores ON dbo.OtrosMateriales.IDMaterial = dbo.OtrosMaterialesAutores.IDMaterial LEFT OUTER JOIN dbo.Autores ON dbo.OtrosMaterialesAutores.IDAutor = dbo.Autores.IDAutor WHERE (dbo.OtrosMateriales.IDMaterial IN (SELECT OtrosMateriales.IDMaterial FROM OtrosMateriales LEFT OUTER JOIN Ejemplares ON Ejemplares.IDMaterial = OtrosMateriales.IDMaterial LEFT OUTER JOIN OtrosMaterialesAutores ON OtrosMateriales.IDMaterial = OtrosMaterialesAutores.IDMaterial LEFT OUTER JOIN Autores ON OtrosMaterialesAutores.IDAutor = Autores.IDAutor WHERE (Ejemplares.CodigoAcceso = @CamposBuscar OR OtrosMateriales.Titulo LIKE '%' + @CamposBuscar + '%' OR Autores.Nombre LIKE '%' + @CamposBuscar + '%' OR Autores.Apellidos LIKE '%' + @CamposBuscar + '%' OR OtrosMateriales.Clasificacion LIKE @CamposBuscar + '%' OR (Autores.Nombre + ' ' + Autores.Apellidos) LIKE '%' + @CamposBuscar + '%' OR Materias.Materia LIKE '%' + @CamposBuscar + '%') AND OtrosMateriales.IDTipoMaterial = @IDTipoMaterial AND OtrosMateriales.Titulo IS NOT NULL GROUP BY OtrosMateriales.IDMaterial)) OPEN Autores_Cursor FETCH NEXT FROM Autores_Cursor INTO @IDLibro,@Titulo,@NombreAutor, @Clasif, @IDTMat SET @LibAnt = @IDLibro SET @LibSig = @IDLibro WHILE @@FETCH_STATUS = 0 BEGIN IF @LibAnt = @LibSig AND @NAutores <> '' BEGIN SET @NAutores = @NAutores + ', ' END IF @LibAnt = @LibSig BEGIN SET @NAutores = @NAutores + @NombreAutor SET @LibAnt = @LibSig SET @IDLibro2 = @IDLibro SET @Titulo2 = @Titulo SET @Clasif2 = @Clasif SET @IDTMat2 = @IDTMat END ELSE BEGIN INSERT INTO #LibAut (IDLibro, Titulo, Autores, Clasificacion, IDTipoMaterial) Select @IDLibro2,@Titulo2 ,@NAutores, @Clasif2, @IDTMat2 SET @NAutores = '' SET @NAutores = @NombreAutor SET @LibAnt = @LibSig SET @IDLibro2 = @IDLibro SET @Titulo2 = @Titulo SET @Clasif2 = @Clasif SET @IDTMat2 = @IDTMat END FETCH NEXT FROM Autores_Cursor INTO @IDLibro, @Titulo, @NombreAutor, @Clasif, @IDTMat SET @LibSig = @IDLibro END CLOSE Autores_Cursor DEALLOCATE Autores_Cursor INSERT INTO #LibAut (IDLibro, Titulo, Autores, Clasificacion, IDTipoMaterial) Select @IDLibro2,@Titulo2 ,@NAutores,@Clasif2, @IDTMat2 delete from #LibAut where Titulo is null or Titulo = '' select IDLibro as IDMaterial,Titulo, Autores as Nombre, Clasificacion, IDTipoMaterial from #LibAut --DROP TABLE #LibAut GO
Mi problema comienza cuando ejecuto la aplicación porque la ejecución funciona normalmente toda a excepción de las consultas porque cuando las voy a realizar me sale el siguiente error:
"Valor de tiempo de espera caducado. El período de tiempo de espera caducó antes de completar la operación o el servidor no responde.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Data.SqlClient.SqlException: Valor de tiempo de espera caducado. El período de tiempo de espera caducó antes de completar la operación o el servidor no responde.
Error de código fuente:
Línea 83: SqlDataAdapter ObjDataAdapter=new SqlDataAdapter();
Línea 84: ObjDataAdapter.SelectCommand=objcommand;
Línea 85: ObjDataAdapter.Fill(dsGeneral);
Línea 86: objConnection.Close();
Línea 87:
Archivo de origen: c:\inetpub\wwwroot\sabio\libreriaclasessabio\sql.c s Línea: 85"
Aqui es donde yo no entiendo el porque de ese error si las consultas me funcionan en el Sql Server y el analizador de consultas, he intentado muchas cosas pero nada me funciona y me sigue saliendo el error, es más en el código llega a la primera consulta y cuando va a llenar el dataset es cuando me sale el error.
A quien me pueda a yudar a resolver este gran problema se lo agradezco de antemano.