Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cambiar un campo de texto en un archivo .bat

Estas en el tema de Cambiar un campo de texto en un archivo .bat en el foro de SQL Server en Foros del Web. Hola a todos: Tengo una base de datos que maneja campos de texto grande, los uso para guardar scripts de visual basic. Ahora bien, quiero ...
  #1 (permalink)  
Antiguo 24/05/2012, 10:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 17 años, 3 meses
Puntos: 2
Cambiar un campo de texto en un archivo .bat

Hola a todos:

Tengo una base de datos que maneja campos de texto grande, los uso para guardar scripts de visual basic. Ahora bien, quiero cambiar uno de esos campos mediante un archivo .bat, este archivo yo ya lo tengo, el detalle es que al intentar ingresar el registro SQL me envia errores ya que los comentarios y algunas sentencias de mi script contienen datos como comillas simples, Enters etc.

Alguien tiene idea de que puedo hacer para realizar esta actualizacion?

Es forzoso que lo haga mediante el BAT ya que es una actualizacion de base de datos en diferentes lugares y son muchas com para hacerlo manual y una por una

Saludos...
  #2 (permalink)  
Antiguo 24/05/2012, 10:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Cambiar un campo de texto en un archivo .bat

explicate un poco mejor que necesitas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/05/2012, 11:11
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Cambiar un campo de texto en un archivo .bat

Gracias por responder Libras y me explico.

Yo tengo una tabla llamada tbl_scripts, campos: nombre_Script nvarchar(30) , codigo nvarchar(max).

Ahora por ejemplo yo tengo en la tabla el siguiente registro:

Nombre_script
PRUEBA

Codigo

Sub Main()
Dim strMensaje

strMensaje = "Hola Mundo"

'Enviamos el mensaje de saludo
MyMessage (strMensaje)

End sub

Esta es mi informacion actual, pero yo quiero cambiar el mensaje de "hola Mundo" por "Esta prueba esta siendo eficiente" esto desde SQLCMD ya que las bases de datos son muchas y es totalmente necesario el cambio. entonces tengo un bat que me hace un update sobre el campo.

@echo off
echo Ejecutando complemento de productos
sqlcmd -S .\SQLEXPRESS,1400 -U sa -P 12345678 -Q "UPDATE [MIBASEDEDATOS].[dbo].[tbl_scripts] SET [codigo] = 'Sub Main()
Dim strMensaje

strMensaje = "Funcionó"

'Enviamos el mensaje de saludo
MyMessage (strMensaje)

End sub' WHERE [MIBASEDEDATOS].[dbo].[tbl_scripts].[Nombre_script] = 'PRUEBA'"
echo Ejecucion completa

Pero al realizar la ejecucion del bat en automatico tengo errores, por ejemplo me dice que la palabra DIM no es válida.

Quiero saber si existe alguna manera de hacer este cambio. Yo no tengo la posibilidad de acceder a los servidores donde se hará este cambio. Por lo que no puedo hacer instalaciones ni nada por el estilo

Saludos...
  #4 (permalink)  
Antiguo 24/05/2012, 16:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Cambiar un campo de texto en un archivo .bat

en lugar de usar una linea de codigo por sentencia por que no haces un query en sql y ejecutas el query? tambien puedes hacerlo con sqlcmd :)

cuando digo query es un archivo de texto o un archivo sql que nada mas contendria

sqlcmd -S .\SQLEXPRESS,1400 -U sa -P 12345678 -Q "UPDATE [MIBASEDEDATOS].[dbo].[tbl_scripts] SET [codigo] = 'Sub Main()
Dim strMensaje

strMensaje = "Funcionó"

'Enviamos el mensaje de saludo
MyMessage (strMensaje)

End sub' WHERE [MIBASEDEDATOS].[dbo].[tbl_scripts].[Nombre_script] = 'PRUEBA' "
go
sqlcmd -S .\SQLEXPRESS,1400 -U sa -P 12345678 -Q "UPDATE [MIBASEDEDATOS].[dbo].[tbl_scripts] SET [codigo] = 'Sub Main()
Dim strMensaje

strMensaje = "Funcionó"

'Enviamos el mensaje de saludo
MyMessage (strMensaje)

End sub' WHERE [MIBASEDEDATOS].[dbo].[tbl_scripts].[Nombre_script] = 'PRUEBA'"
go
y asi sucesivamente


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/05/2012, 10:34
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Cambiar un campo de texto en un archivo .bat

Hola Libras:

El problema con el que me he encontrado es que dentro del script existen caracteres que SQL interpreta de modo distinto a la intencion del caracter. Ej:

Mientras que para VBScript la ' (comilla simple) es interpretada como un caracter para marcar un comentario, para SQL Server esta es interpretada como inicio o fin de una cadena, por lo que al ejecutar la sentencia me indica errores de sintaxis.

La forma que encontre de solucionarlo es creadon scripts y algunos objetos de windows que me permitieron hacer esta insercion sin problema, pero ya sin usar sql como lenguaje de ejecucion

Saludos...
  #6 (permalink)  
Antiguo 25/05/2012, 11:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Cambiar un campo de texto en un archivo .bat

usando sql puedes hacer que entren las comillas simples como caracteres ya se concatenando char(39) o usando comilla simple 2 veces algo asi:

Código SQL:
Ver original
  1. DECLARE @cadena VARCHAR(20)
  2. SET @cadena=''Probando cadenas''
  3. print @cadena
  4. ------------------------
  5. 'Probando cadenas'
  6. SET @cadena= CHAR(39) + 'Probando cadenas' + CHAR(39)
  7. print @cadena
  8. ------------------------
  9. 'Probando cadenas'

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: bat, registro, sql, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.