Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar sqlcmd desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=91350)

Soa Pelaez 10-01-2017 04:41:24

Ejecutar sqlcmd desde delphi
 
Buen día como puedo ejecutar una sentencia SQL de creación de usuario desde delphi usando el sqlcmd.exe

Ya sea usando shellexecute o winexec, no logro que funcione alguien tiene alguna idea, de como ejecutarlo correctamente.

Ya que si ejecuto la sentencia de creación de usuario sqlcmd.exe directamente sin usar delphi lo hace correctamente, pero realizando la invocación desde delphi, me presenta errores, gracias de antemano.

Forma de invocación...
Código Delphi [-]
//Con Shell invocación
ShellExecute(Handle,nil,PChar('sqlcmd.exe'),PChar(Sentencia),nil,SW_SHOW);
//Con Winexec 
WinExec(PAnsiChar(AnsiString(Sentencia)), SW_SHOW);

Con cmd.exe lo intente pero no se como enviar varios retrocesos de directorios y por ultimo ejecutar la sentencia??

Casimiro Notevi 10-01-2017 12:21:23

¿Qué es sqlcmd? ¿cuáles son esos errores de los que no has dicho nada?

Neftali [Germán.Estévez] 12-01-2017 12:22:53

¿Puedes poner la sentencia que intentar ejecutar?
¿Algún error?

Una alternativa es crear un BAT/CMD (que puedes crear desde el propio delphi) con lo que quieres ejecutar y luego lanzarlo desde Delphi con ShellExecute.


Estos dos mensajes hablan del tema que estamos tratando, aunque si buscas encontrarás más:
https://www.clubdelphi.com/foros/showthread.php?t=74794
https://www.clubdelphi.com/foros/showthread.php?t=86809
https://www.clubdelphi.com/foros/showthread.php?t=41249

Soa Pelaez 14-01-2017 19:46:06

Necesito ejecutar una sentencia de creación de usuario usando el sqlcmd (es una utilidad para el manejo de bases de datos relacionales (SGBD) basado en el lenguaje Transact-SQL mediante la línea de comandos. Utilizando la línea de comandos sqlcmd, usted puede: - Mandar instrucciones T-SQL a la base de datos SQL Server), la sentencia la guarde en una variable string y luego desde delphi ejecuto las línea anteriores pero al ejecutarlo no sucede nada, no me genera algún error o sugerencia, tan solo muestra rapidamente la ventana de sqlcmd y continua, pero al revisar la base de datos el usuario no se creo correctamente, espero alguien pueda ayudarme.

La sentencia guardada en la variable es

Código SQL [-]
USE [master]
GO
CREATE LOGIN [Pepe] WITH PASSWORD=N'Pepe', 
DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF,CHECK_POLICY=OFF
GO

Aunque no solo necesito esta sentencia, sino ejecutar otras como creación de tablas o de base de datos, no lo requiero usando archivos externos sino dentro de mi aplicación guardados ya sean en variables o constantes.
Alguna idea de como hacerlo, gracias.

Soa Pelaez 19-01-2017 19:33:51

Cita:

Empezado por Soa Pelaez (Mensaje 512353)
Necesito ejecutar una sentencia de creación de usuario usando el sqlcmd (es una utilidad para el manejo de bases de datos relacionales (SGBD) basado en el lenguaje Transact-SQL mediante la línea de comandos. Utilizando la línea de comandos sqlcmd, usted puede: - Mandar instrucciones T-SQL a la base de datos SQL Server), la sentencia la guarde en una variable string y luego desde delphi ejecuto las línea anteriores pero al ejecutarlo no sucede nada, no me genera algún error o sugerencia, tan solo muestra rapidamente la ventana de sqlcmd y continua, pero al revisar la base de datos el usuario no se creo correctamente, espero alguien pueda ayudarme.

La sentencia guardada en la variable es

Código SQL [-]
USE [master]
GO
CREATE LOGIN [Pepe] WITH PASSWORD=N'Pepe', 
DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF,CHECK_POLICY=OFF
GO

Aunque no solo necesito esta sentencia, sino ejecutar otras como creación de tablas o de base de datos, no lo requiero usando archivos externos sino dentro de mi aplicación guardados ya sean en variables o constantes.
Alguna idea de como hacerlo, gracias.

Alguien puede colaborarme con esto.

Casimiro Notevi 19-01-2017 19:56:10

Ya te han contestado que no se entiende.
Te han hecho unas preguntas para aclararlo pero no has respondido.

Soa Pelaez 20-01-2017 02:58:25

Cita:

Empezado por Casimiro Notevi (Mensaje 512477)
Ya te han contestado que no se entiende.
Te han hecho unas preguntas para aclararlo pero no has respondido.

Les he dado respuesta, y a su vez me he explicado y he mostrado la sentencia que intento ejecutar, si lees bien explico que no se visualiza ningún error simplemente realiza el proceso, pero al revisar la base de datos el resultado de la sentencia no se realizo.

Quien pueda ayudarme Gracias.

Neftali [Germán.Estévez] 20-01-2017 09:34:07

Cita:

Empezado por Soa Pelaez (Mensaje 512353)
Aunque no solo necesito esta sentencia, sino ejecutar otras como creación de tablas o de base de datos, no lo requiero usando archivos externos sino dentro de mi aplicación guardados ya sean en variables o constantes.
Alguna idea de como hacerlo, gracias.

Otra pregunta.
¿Porqué no ejecutas esas sentencias directamente con ADO contra el SQL Server (en lugar de usar una herramienta externa)?
Lo digo, porque será más rápido, más sencillo y con menos problemas.

Soa Pelaez 20-01-2017 21:06:14

Cita:

Empezado por Neftali (Mensaje 512495)
Otra pregunta.
¿Porqué no ejecutas esas sentencias directamente con ADO contra el SQL Server (en lugar de usar una herramienta externa)?
Lo digo, porque será más rápido, más sencillo y con menos problemas.

Lo necesito de esta manera porque al tener una conexión me solicita usuario y contraseña de base de datos, cosa que no tengo; por ello ejecuto esa instrucción por una herramienta externa y luego de esto ahí si tendría un usuario y contraseña para conectarme y realizar sentencias usando componentes de delphi de conexión y querys.

Gracias.

Soa Pelaez 02-02-2017 00:47:09

Cita:

Empezado por Soa Pelaez (Mensaje 512515)
Lo necesito de esta manera porque al tener una conexión me solicita usuario y contraseña de base de datos, cosa que no tengo; por ello ejecuto esa instrucción por una herramienta externa y luego de esto ahí si tendría un usuario y contraseña para conectarme y realizar sentencias usando componentes de delphi de conexión y querys.

Gracias.

Alguien que pueda ayudarme?

AgustinOrtu 02-02-2017 08:53:49

Podes pedir el usuario y contraseña en tiempo de ejecucion al momento de abrir la conexion a la base de datos. En realidad eso es el comportamiento por defecto de cualquier suite de componentes que trabajan con bases de datos. Por lo general la propiedad que lo activa/desactiva es llamda "LoginPrompt" en los objetos "TxxxConnection"


La franja horaria es GMT +2. Ahora son las 12:21:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi