Bonjour à tous,

Je viens solliciter votre aide car je galère depuis quelques jours sur un script VBS.
En effet, j'ai script VBS qui exécute un fichier .SQL. Mon script VBS est le suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'récupération de la requete dans le fichier requete
dim filesys, text, readfile, PosteDistant 
set filesys = CreateObject("Scripting.FileSystemObject") 
set readfile = filesys.OpenTextFile(".\scriptsSQL\requete.sql", 1, false) 
strSQL = readfile.ReadAll
Dim myStream, myConnection, myCommand, adoRec, servername _
,  databasename, user, password, mystring, laststamp, maxage
 
Set myStream = CreateObject("ADODB.Stream")
Set myConnection = CreateObject("ADODB.Connection")
Set myCommand = CreateObject("ADODB.Command")
 
 
 
myConnection.Open "Driver={SQL Server};Server=D043FAVREJ\sqlexpress;Database=AGILSTORE;Uid=dom\user;Pwd=password;Trusted_Connection=yes"
 
set myCommand.ActiveConnection=myConnection
 
 
myCommand.CommandText=strSQL
myCommand.Execute()

Mon fichier requete.sql contient la requête suivante :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use master
declare @nomuser varchar(20)
declare @nomdb varchar(20)
declare @pwduser varchar(20)
 
/* NOM DE LA BASE DE DONNEES */
SET @nomdb='AGILStore'  
PRINT 'CREATION DE LA LISTE DES UTILISATEURS AGIL'
/* AJOUT des utilisateurs à supprimer */
CREATE TABLE #useragil ( usernameagil varchar(20),pwdnameagil varchar(20)) 
insert #useragil(usernameagil,pwdnameagil) values ('agilstore','user1')
insert #useragil(usernameagil,pwdnameagil) values ('agilpos','user2')
 
/***********************/
/* CREATION DES LOGINS */
/***********************/
PRINT ''
PRINT '************************************************'
PRINT 'CREATION DES LOGINS'
PRINT ''
DECLARE createuser_cursor CURSOR
FOR SELECT usernameagil,pwdnameagil FROM #useragil
 
OPEN createuser_cursor FETCH 
NEXT FROM createuser_cursor into @nomuser,@pwduser
 
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT '************************************************'
PRINT '** CREATION DE L UTILISATEUR  : ' + @nomuser
  exec ('CREATE LOGIN ' + @nomuser +' WITH PASSWORD =  ''' + @pwduser + ''',DEFAULT_LANGUAGE=French, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;')  
PRINT ''
PRINT '- Affectation de la base de donnees par defaut'
  exec ('ALTER LOGIN ' + @nomuser +' WITH DEFAULT_DATABASE = ' + @nomdb + ';')
PRINT  '- CREATION du user de base de donnees'
  EXEC ('USE ' + @nomdb + ';CREATE USER ' + @nomuser + ' FOR LOGIN ' + @nomuser + ';')
PRINT '- Affectation du schema par default'
  EXEC ('USE ' + @nomdb + ';ALTER USER ' + @nomuser + ' WITH DEFAULT_SCHEMA = dbo;') 
PRINT  '- AJOUT du role sur la base de donnees'
  EXEC ('USE ' + @nomdb + '; EXEC sp_addrolemember ''db_owner'', '''  + @nomuser + ''';')
PRINT '************************************************'
FETCH NEXT FROM createuser_cursor INTO @nomuser,@pwduser
END
 
CLOSE createuser_cursor
DEALLOCATE createuser_cursor
GO
DROP TABLE #useragil

Mon problème est le suivant. Lorsque j'exécute mon script SQL depuis la console SQL Epress, celui-ci se déroule correctement. Cependant, quand je le l'exécute depuis mon script VBS, j'ai un message d'erreur "Syntaxe incorrecte ver 'createuser_cursor" code 80040E14.

Si quelqu'un a une idée sur mon problème ?

Je vous remercie tous par avance.