Ejecucion de Aplicacion

Estimado: la consulta es:
Arme una aplicación con VS2008 (Framework 2.0) que corre solo un procedimiento almacenado en SQL Server 2005. Esto es para prueba de ejecución del archivo. La misma genera archivos en cierta carpeta del Servidor. El tema es que al ejecutar el procedimiento desde el motor de SQL genera perfectamente los archivos (son como 500 archivos), pero al ejecutar mi aplicación no llega a los 15 archivos generados y se termina sin decirme nada (ningún error). Setee el xACT_abort en off al inicio del procedimiento y lo prendo al finalizar pero no pasa nada. ¿Alguna idea de lo que puede estar sucediendo?

1 respuesta

Respuesta
1
Lo que comentas me parece raro, ¿has verificado mediante una traza del Profiler que este pasando correctamente tu query a la base de datos?
Descartemos primero eso, luego vemos si el problema va por el lado de la bd o del aplicativo, que puede ser que falte setear algo más.
Este es el procedimiento:
-- ============================================================
-- Author: Nieva Miguel A.
-- Create date: 14/07/2009
-- Description: Genera archivo SDF de cables por Distribuidores
-- ============================================================
ALTER PROCEDURE [dbo].[GeneraSDFPorFuente]
AS
begin
    DECLARE @Fuente  varchar(50)
    DECLARE @sql  varchar(5000)
    DECLARE @guion  varchar(5)
    DECLARE @comilla  varchar(5)
    DECLARE @doblecomilla  varchar(5)
    DECLARE @sql0  varchar(2000)
    DECLARE @sql1  varchar(2000)
    DECLARE @sql2  varchar(2000)
    DECLARE @sql3  varchar(2000)
    DECLARE @sql4  varchar(2000)
    DECLARE @sql5  varchar(2000)
    IF OBJECT_ID ('VistaCables', 'V') IS NOT NULL
        SET @sql0 = 'DROP VIEW VistaCables'
        EXEC(@sql0)
    DECLARE CursorFuentes CURSOR FOR
        SELECT DISTINCT
            lnk2.linkValue AS Fuente
        FROM dbo.mngCadenaT
            INNER JOIN dbo.sprLinks AS lnk2
                ON lnk2.objectId = dbo.mngCadenaT.Fuente
        WHERE
            (lnk2.linkId = 30) AND (lnk2.logIdTo = 0)
    OPEN CursorFuentes
    FETCH Next FROM CursorFuentes
        INTO @Fuente
    SET @comilla = ''''
    SET @doblecomilla = '"'
    SET @guion = '-'
    While @@FETCH_STATUS = 0
        BEGIN
            SET @sql0 = 'CREATE VIEW VistaCables AS SELECT TOP(100) PERCENT (' + @comilla + @doblecomilla + @comilla + ' + CAST(sprObjects.objectId AS varchar) + '
                        + @comilla + @doblecomilla + @comilla + ') AS objeto, ('
                        + @comilla + @doblecomilla + @comilla + '+ RTRIM(COALESCE(Fuente, ' + @comilla + @guion + @comilla + ')) + ' + @comilla + @doblecomilla + @comilla + ') AS caption, '
            SET @sql1 = 'sprObjectVertixs.y, sprObjectVertixs.x FROM sprObjects INNER JOIN sprObjectVertixs ON sprObjects.objectId = sprObjectVertixs.objectId '
            SET @sql2 = 'INNER JOIN mngEntidades ON sprObjects.sprId = mngEntidades.sprid LEFT JOIN mngCadenaTopologica3 ON sprObjects.objectId = mngCadenaTopologica3.Obj '
            SET @sql3 = 'WHERE logIdTo = 0 AND objectType = 11 AND sprObjects.sprId IN (SELECT sprId FROM sprEntities WHERE netTypeId = 2) '
            SET @sql4 = 'AND Fuente = '
            SET @sql5 = ' ORDER BY sprObjects.objectId, vertixOrder'
            SET @sql  = @sql0 + @sql1 + @sql2 + @sql3 + @sql4 + @comilla + rtrim(@Fuente) + @comilla + @sql5
            EXEC (@sql)
--            SELECT @sql = 'bcp EdeseGis2..VistaCables out C:\temp\DatosBCP\Distribuidor-' + rtrim(@Fuente) + '.csv -c -t, -SGIS2K -Usa -Ppesk2'
            SET @sql = 'bcp EdeseGis2..VistaCables out E:\ProjectsFiles\EdeseGis2\SIPREnet\SDFs\Temp\Copia\Dis' + rtrim(@Fuente) + '.csv -c -t, -SGIS2K -Usa -Ppesk2'
            EXEC master..xp_cmdshell @sql
            IF OBJECT_ID ('VistaCables', 'V') IS NOT NULL
                SET @sql0 = 'DROP VIEW VistaCables'
                EXEC(@sql0)
--            SELECT @sql = 'C:\ProgramFiles\MapGuideSDFLoader6.5\sdfld32i.exe /IC /WO /COORDPREC:32 /COORDSYS:IN:LL84:OUT:*XY-MT* /TL /TYPE:L /OS /NOEXT "C:\temp\DatosBCP\Distribuidor-' + rtrim(@Fuente) + '.csv" "C:\temp\DatosBCP\Distribuidor-' + rtrim(@Fuente) + '.sdf"'
            SET @sql = 'C:\ProgramFiles\MapGuideSDFLoader6.5\sdfld32i.exe /IC /WO /COORDPREC:32 /COORDSYS:IN:LL84:OUT:*XY-MT* /TL /TYPE:L /OS /NOEXT "E:\ProjectsFiles\EdeseGis2\SIPREnet\SDFs\Temp\Copia\Dis' + rtrim(@Fuente) + '.csv" "E:\ProjectsFiles\EdeseGis2\SIPREnet\SDFs\Temp\Copia\Dis' + rtrim(@Fuente) + '.sdf"'
            EXEC master..xp_cmdshell @sql
            FETCH Next FROM CursorFuentes
            INTO @Fuente
        END
    CLOSE CursorFuentes
    DEALLOCATE CursorFuentes
END
************************************************************
y esto hace en la aplicacion:
************************************************************
Imports System.Data.SqlClient
Module Module1
    Sub Main()
        'Ejecuto procedimiento almacenado
        Dim cnCadena As String
        cnCadena = "Data Source=192.168.1.2;Initial Catalog=EdeseGis2;"
        cnCadena &= "Persist Security Info=True;User ID=sa;Password=pesk2"
        Dim cn As New SqlConnection(cnCadena)
        Dim cmdProcedimiento As SqlCommand = New SqlCommand("[EdeseGis2].[dbo].[GeneraSDFPorFuente]", cn)
        cmdProcedimiento.CommandType = CommandType.StoredProcedure
        Dim drProc As SqlDataReader
        cn.Open()
        drProc = cmdProcedimiento.ExecuteReader
    End Sub
End Module
Te comente sobre el profiler, que es lo que envías a la base de datos desde tu aplicativo, el tema de como configurar tu conexión no te puedo ayudar con el código que envías, ademas que no es mi fuerte ello.
Bueno, usa el profiler y compara lo que se envía con lo que esperas, de ser igual el tema esta en tu código de .Net.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas