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?
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.