Ejecutar lote sql desde ado

10/08/2004 - 21:47 por Carlos A. Díaz | Informe spam
Hola, estoy intentando ejecutar un lote de instrucciones sql contra un
SQLSERVER y estoy intentando usar el procedimiento execute del objeto
connection de ado, pero no me da resultado, el lote seria masomenos asi:
(fue creado con el asistente)

USE GestCor
GO

if not exists (select * from master..syslogins where name N'GestCorProgram')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select @logindb N'GestCor', @loginlang = N'Español'
if @logindb is null or not exists (select * from master..sysdatabases where
name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master..syslanguages
where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
exec sp_addlogin N'GestCorProgram', '[pwd]' , @logindb, @loginlang
END
GO

Pero cuando paso esta cadena, me da error, intente con sp_executesql y
tampoco, me podrian decir como seria para ejecutar ese lote desde el execute
de objeto connection y vb.

Saludos

Gracias
 

Leer las respuestas

#1 SoftJaén
11/08/2004 - 12:13 | Informe spam
"Carlos A. Díaz" escribió:

estoy intentando ejecutar un lote de instrucciones sql contra un
SQLSERVER y estoy intentando usar el procedimiento execute del
objeto connection de ado, pero no me da resultado, el lote seria
masomenos asi: (fue creado con el asistente)

USE GestCor
GO

Pero cuando paso esta cadena, me da error, intente con
sp_executesql y tampoco, ...




Hola, Carlos:

No estoy yo muy puesto en T-SQL, pero como tampoco has indicado el error que
obtienes, me da a mí que pensar que las palabras claves USE y GO, no se
pueden utilizar para ejecutar una consulta mediante el método «Execute» del
objeto «Connection», ya que creo que son palabras reservadas del «Analizador
de consultas», pograma cliente que se acompaña con la licencia de Microsoft
SQL Server 2000.

Prueba a quitar dichas palabras, porque para utilizar la base de datos
«GestCor», solo basta que especifiques dicha base en el parámetro «Initial
Catalog» de la cadena de conexión del objeto «Connection». Aparte, deberás
de delimitar bien las líneas de la consulta para que se adapten a una cadena
alfanumérica de Visual Basic.

Te dejo un ejemplo que he adaptado de los Libros en Pantalla, para que
observes cómo se escribiría la consulta para crear, en este caso, una nueva
base de datos:

cnn.Execute "CREATE DATABASE Sales " & _
"ON " & _
"( NAME = Sales_dat," & _
"FILENAME = 'C:\Archivos de programa\...\saledat.mdf'," & _
"SIZE = 10," & _
"MAXSIZE = 50," & _
"FILEGROWTH = 5 )" & _
"LOG ON" & _
"( NAME = 'Sales_log'," & _
"FILENAME = 'D:\Archivos de programa\...\salelog.ldf'," & _
"SIZE = 5MB," & _
"MAXSIZE = 25MB," & _
"FILEGROWTH = 5MB )", , adCmdText

NOTA: En los parámetros «FILENAME» deberás de escribir la ruta completa
donde desees crear la base de datos.

En fin, no sé si será la solución a tu problema, pero menos da una piedra.
:-)

Un saludo

Enrique Martínez
[MS MVP - VB]
http://mvp-access.com/softjaen/

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares