OVH Cloud OVH Cloud

Problème d'exécution de script

2 réponses
Avatar
Jonathan
J'ai un problème lorsque j'exécute un fichier SQL qui a été généré à partir
de SQL Serveur (généré en Windows Text ANSI). Ce fichier fera la création
d'une base de données, mais pour l'instant je ne fais que la création d'une
table pour apprendre le fonctionnement. Voici ce qu'il contient :

use [database]
GO

CREATE TABLE [dbo].[test] (
[ID_Acces] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Usager] [int] NULL ,
[ID_Site] [int] NULL ,
[ID_Projet] [int] NULL ,
[ID_Aggregat_Projet] [int] NULL
) ON [PRIMARY]
GO

Ce script est exécuter avec l'objet ADO en VB. Pour l'exécution avec
l'objet ADO, je me suis fié à la discussion suivante :

http://groups.google.com/groups?threadm=%23Uss0%249EDHA.2824%
40TK2MSFTNGP11.phx.gbl

Le code suivant doit faire la création de la base de données(CFile est une
classe que j'ai bien ajouté à mon projet):

Private Sub Main()

ExecFile "c:\Script.sql", "Driver={SQL
Server};Server=ip;Database=nomdeDB;uid=jonathan;pwd=12345"
End Sub

Private Sub ExecFile _
( _
ByRef sFile As String, _
ByRef sConnectionString As String _
)

Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim f As CFile

Set cn = New ADODB.Connection
cn.Open sConnectionString

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
Set f = New CFile
cmd.CommandText = f.OpenFile(sFile)
cmd.Execute

cn.Close

End Sub


Cependant, lorsque vient le temps d'exécuter mon script (cmd.Execute), un
problème survient me disant ceci :

Erreur d'exécution '-2147217900(80040e14)':
[Microsoft][ODBC SQL Server Driver][SQL server]Line 2: Incorrect syntax
near 'GO'

Quelqu'un sait-il en quoi consiste mon problème? De plus, si vous
connaissez un bon site, exemple, pour l'exécution de script SQL en VB, vous
pouvez toujours m'en faire part (à titre d'aide puisque je n'ai encore
jamais fait une telle chose).


Tout aide est grandement appréciée. Merci énormément à l'avance!

Jonathan

2 réponses

Avatar
Zoury
Salut Jonathan! :O)

tu as 2 options.

1. remplace le contenu de ton fichier par :
CREATE TABLE [dbo].[test] (
[ID_Acces] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Usager] [int] NULL ,
[ID_Site] [int] NULL ,
[ID_Projet] [int] NULL ,
[ID_Aggregat_Projet] [int] NULL
) ON [PRIMARY]

afin de n'avoir qu'une seule instruction à exécuter car l'exécution à l'aide
de cmd.Execute() ne permet d'exécuter qu'une seule instruction à la fois.


2. emploi l'utilitaire OSQL comme je t'ai parlé mentionné plutôt cette
semaine ... mais vu la longueur de ton fichier, je ne crois pas que ça vaut
la peine. as-tu d'autres instructions à exécuter ?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Jonathan
"Zoury" wrote in
news::

Salut Jonathan! :O)

tu as 2 options.

1. remplace le contenu de ton fichier par :
CREATE TABLE [dbo].[test] (
[ID_Acces] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Usager] [int] NULL ,
[ID_Site] [int] NULL ,
[ID_Projet] [int] NULL ,
[ID_Aggregat_Projet] [int] NULL
) ON [PRIMARY]

afin de n'avoir qu'une seule instruction à exécuter car l'exécution à
l'aide de cmd.Execute() ne permet d'exécuter qu'une seule instruction
à la fois.


2. emploi l'utilitaire OSQL comme je t'ai parlé mentionné plutôt cette
semaine ... mais vu la longueur de ton fichier, je ne crois pas que
ça vaut la peine. as-tu d'autres instructions à exécuter ?




En fait, j'ai plusieurs lignes d'instructions à exécuter (une base complète
sera créé à partir d'un script généré de SQL Serveur). J'avais vérifié
OSQL, mais j'avais rencontré quelques problèmes. J'ai donc testé avec
l'exécution de ADO, mais j'ai manqué le détail à propos du fait qu'on ne
pouvais exécuter qu'une seule instruction à la fois (désolé). Je vais donc
tenté de voir ce que je peux faire avec OSQL.

Merci encore :)

Jonathan