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 :
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!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ?
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 ?
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 ?
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
"Zoury" <yanick_lefebvre@hotmail.com> wrote in
news:OmgepodaEHA.3420@TK2MSFTNGP12.phx.gbl:
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.
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.