cancel
Showing results for 
Search instead for 
Did you mean: 

Se ha producido un error interno (50000) [Mensaje 131-183]

gerardo_mendez
Active Contributor
0 Kudos

Buen día compañeros.

De nuevo con un detalle de SQL: En nuestro sistema se genera un archivo de texto con fines de facturación electrónica, todo se hace por medio de procedimientos almacenados y hasta el momento no se han tenido detalles al respecto pero ahora que se están realizando pruebas en un nuevo server, el TXT no se genera cuando se especifica una ruta destino diferente al Servidor Local, es decir, si le especifico una ruta destino que direccione al mismo servidor, el TXT se genera sin problemas pero si pongo una ruta fuera del servidor, el TXT no se genera enviando el error mencionado.

El SQl Server del server problematico es:

Windows Server 2012

SQL Server 2014

El SQL Server donde se está trabajando de manera normal es:

Windows server 2008

SQL Server 2008

Agradezco cualquier aportación al respecto.

Accepted Solutions (1)

Accepted Solutions (1)

former_member188471
Active Contributor
0 Kudos

Saludos Gerardo, ya validaste que tenga los permisos de red necesario para poder escribir el archivo en la ruta que mencionas.

Una duda mas: El error que mencionas lo genera SAP?

gerardo_mendez
Active Contributor
0 Kudos

Así es, ya validé que efectivamente se tiene libre acceso a la ubicación de red, incluso he probado con varias direcciones de red y en ninguna se ha podido crear el archivo.

El error lo genera SAP al momento de pretender crear el archivo:

former_member188471
Active Contributor
0 Kudos

Valida que la ruta que estas pasando es correcto. Si puedes postea el SP ya que igual y lo tienen modificado, ya hago uso de uno igual y me funciona de maravilla pero si hay que tener mucho cuidado con las rutas y permisos.

gerardo_mendez
Active Contributor
0 Kudos

Aquí está el SP:

USE [BaseDeDatos]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[spWriteStringToFile]

(

@String nvarchar(MAX), --8000 in SQL Server 2000

@Path VARCHAR(254),

@Filename VARCHAR(254)

)

AS

DECLARE  @objFileSystem int

,@objTextStream int,

@objErrorObject int,

@strErrorMessage Varchar(1000),

@Command varchar(1000),

@hr int,

@fileAndPath varchar(255)

set nocount on

select @strErrorMessage = 'opening the File System Object'

EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject', @objFileSystem OUT

Select @FileAndPath = @path + '\' + @filename

if @hr = 0 Select @objErrorObject = @objFileSystem, @strErrorMessage = 'Creating file "' + @FileAndPath + '"'

if @hr = 0 EXECUTE @hr = sp_OAMethod  @objFileSystem, 'CreateTextFile', @objTextStream OUT, @FileAndPath,2,False

if @hr = 0 Select @objErrorObject = @objTextStream, @strErrorMessage = 'writing to the file "' + @FileAndPath + '"'

if @hr = 0 EXECUTE @hr = sp_OAMethod  @objTextStream, 'Write', Null, @String

if @hr = 0 Select @objErrorObject = @objTextStream, @strErrorMessage = 'closing the file "' + @FileAndPath + '"'

if @hr = 0 EXECUTE @hr = sp_OAMethod  @objTextStream, 'Close'

if @hr <> 0

begin

  Declare

  @Source varchar(255),

  @Description Varchar(255),

  @Helpfile Varchar(255),

  @HelpID int

  EXECUTE sp_OAGetErrorInfo  @objErrorObject,

  @source output,@Description output,@Helpfile output,@HelpID output

  Select @strErrorMessage='Error whilst '

  +coalesce(@strErrorMessage,'doing something')

  +', '+coalesce(@Description,'')

  raiserror (@strErrorMessage,16,1)

end

EXECUTE sp_OADestroy @objTextStream

EXECUTE sp_OADestroy @objTextStream

former_member188471
Active Contributor
0 Kudos

En la linea donde te marca el error debe sacarte este dato  haciendo referencia al PATH y nombre de archivo.


'Creating file "' + @FileAndPath + '"'


Por lo que regreso a lo mismo, tienes algún detalle con la ruta o permisos. Puedes poner la parte donde mandas esos parametros invocando el SP?


Gracias

gerardo_mendez
Active Contributor
0 Kudos

Creo lo mismo que tu pero no se qué más permisos asignar, si le mando parámetros fijos con la ruta de red, me manda el error 50000:

DECLARE      @return_value int

EXEC   @return_value = [dbo].[NU3_CFD_spWriteStringToFile_NU3]

             @String = 'encabezado',

        @Path = '\\CFDiEquipo\ProyectoCFDI\TEMPs',

        @Filename = 'Archivo.TXT'


Mens 50000, Nivel 16, Estado 1, Procedimiento spWriteStringToFile, Línea 552

Error whilst Creating file "\\CFDiEquipo\ProyectoCFDI\TEMPs\Archivo.TXT",

Pero si voy a la misma ruta, desde el explorador de windows y creo un nuevo archivo, me lo crea sin problemas.

Seguiré haciendo pruebas pero en definitiva creo lo mismo que tu, algo debe de estar faltando entre la comunicación de ambos servers.

Gracias por tu tiempo.

Answers (1)

Answers (1)

juancarlos_huerta
Contributor
0 Kudos

Gerardo,

Desde el servidor donde se ejecuta el código/procedimiento si puedes abrir la ruta destino usando Explorer de Windows? De ser así, verifica que puedas crear archivos en ja carpets desayuno (no vaya ser tenga de permisos de carpeta compartida)

Probaste ejecutar el procedimiento manualmente desde el SQL Server Management Estudio y tampoco se crea?

Otra posible causa podría ser el Firewall o antivirus de alguno de los servidores.

Saludos,

JC.

gerardo_mendez
Active Contributor
0 Kudos

Hola Juan Carlos.

Como lo comento al compañero Julian, las rutas tienen los permisos necesarios, de hecho utilizo la misma ruta a donde envío los TXT productivos.

He probado bajando el Firewall de ambos equipos y aun sigue marcando el mismo error.

Intentando crear el archivo pasando los parámetros directamente a SQL me arroja el siguiente error:

Mens 50000, Nivel 16, Estado 1, Procedimiento spWriteStringToFile, Línea 552

Error whilst Creating file "Nombre y ruta del archivo"

Veo que el error 50000 hace referencia a la instrucción "raiserror" que se utiliza en el procedimiento "spWriteStringToFile" pero no comprendo que tiene que ver con las ubicaciones de red.

Gracias por su apoyo.

juancarlos_huerta
Contributor
0 Kudos

Si intentas mapeando esa carpeta compartida a Z: o Y: ubotea, dentro de tu servidor y esa la usas para tu código/pruebas?

En otros casos he podido crear archivos con SQL hacia otros equipos de la misma red pero con otro procedimiento de SQL. Y usé la ruta de red, sin embargo en tu caso intenta con lo que te comento, no he investigado pero tal vez exista alguna restricción para la función que comentas...

juancarlos_huerta
Contributor
0 Kudos

Gerardo, como te va con este caso?

gerardo_mendez
Active Contributor
0 Kudos

Hola compañero.

He realizado cuanta acción me han recomendado y no he logrado la creación del archivo fuera del equipo local.

Estoy evaluando con la persona de desarrollo el hecho de crear un servicio que esté monitoreando una carpeta local y los archivos que contenga los envíe a la carpeta de red correspondiente.

Creo que debe ser asunto de SQL Server 2014 ya que desde el explorador de archivos puedo crear documentos de un equipo a otro sin restricciones.

Gracias por el seguimiento.