Comment faire pour exécuter un script de base de données fichier de Delphes?

Je veux faire ce qui suit.
1) Créer une base de données.
2) l'Exécution d'un script lorsque crée des tables, procédures stockées, etc. (ce script est créé par SMS " générer des scripts en option)

J'ai trouvé le code suivant: http://www.delphipages.com/forum/showthread.php?t=181685
et modifiées à ceci:

essayer

ADOQuery.ConnectionString := 'Provider=SQLOLEDB.1;Password=' +

edtPassword.Texte
+ ';Persist Security Info=True;User ID=' + edtUser.Texte
+ ';Initial Catalog=maître;Data Source=" +
edtServerName.Texte;

ADOQuery.SQL.Clear;
ADOQuery.SQL.Text := 'create DataBase ' + edtWebDBName.Text;
ADOQuery.ExecSQL; //should check existance of database
ADOWeb.Connected := false;
ADOWeb.ConnectionString := 'Provider=SQLOLEDB.1;Password=' +

edtPassword.Texte
+ ';Persist Security Info=True;User ID=' + edtUser.Texte
+ ';Initial Catalog=' + edtWebDBName.Text + ';Data Source=" +
edtServerName.Texte;
ADOWeb.Connecté := true;

ADOQuery.Connection := ADOWeb;
ADOQuery.SQL.Clear;
ADOQuery.SQL.LoadFromFile(edtScriptFileName.Text);
ADOQuery.ExecSQL;   except

Cela fonctionne jusqu'au moment de l'exécution du fichier de script. Il génère ensuite une exception: Syntaxe Incorrecte près de "GO". Si je lance le script en SMS sur le nouvellement créé DB, c'est bien. Ce problème est-il dû à l'exécution de plus d'une commande SQL à la fois (le script est essentiellement une longue liste de commande/ALLER déclarations? Comment la contourner?

Oh d'ailleurs en bonus, toutes les pensées sur un coup d'oeil rapide pour voir si la nouvelle base de données existe réellement avant l'envoi d'un script pour elle? (Ou il n'est pas nécessaire, car si le fait de créer échoue, il va générer une exception?)

  • Toutes ces réponses vous de travail. Je pense que pour les SMS scripts générés, l'exécution de l'utilitaire sqlcmd est le chemin à parcourir. Aussi j'ai utilisé le ci-dessous pour obtenir la db comte. ADOQuery.SQL.Text := 'SELECT COUNT(*) from sys.les bases de données OÙ nom= " +chr(39)+edtWebDBName.Texte+chr(39); ADOQuery.Ouvert; si ADOQuery.Champs[0].AsInteger = 0 alors // DB N'EXISTE PAS
InformationsquelleAutor Rob | 2011-05-12