2011-06-28 1 views
-2

Je dois interroger la base de données du serveur SQL à l'aide du fichier batch. J'ai mis ces cmdlines dans le fichier séquentiel. Quand j'exécute le fichier batch. Le curseur reste là après avoir établi une connexion de confiance.Comment exécuter une sélection de statut à l'aide d'un fichier de traitement par lots?

OSQL -E 
use db1 
SELECT count(*) FROM table_01 t1 
left join table_02 t2 on t1.tableID = t2.tableID 
WHERE t1.Date < '20110724' 
Go 

Une suggestion?

+2

Avez-vous recherché osql dans, disons, Google? – gbn

Répondre

1

osql a une forme simple.

Par exemple, j'exécuter une commande SQL de e: \ backupdb.txt avec

osql -S servername -U user -P password -i e:\backupdb.txt 

il fait le travail

2

Voici comment je le fais. Commencez par créer le script SQL de votre choix et stockez-le sous la forme d'un fichier texte simple.

Ensuite, utilisez SQLCMD (ou OSQL ou périr la pensée, ISQL) pour appeler ce fichier, quelque chose comme ceci:

SQLCMD -S %1 -E -b -h-1 -I -d tempdb -i BulkDeploy.txt > BulkDeploy_%DateString%.txt 

Où:

  • S spécifie le serveur d'instance SQL (ici, spécifié avec le premier paramètre batch)
  • E utiliser l'authentification NT
  • b si le SQL rencontre une erreur, renvoyer une valeur que le lot ERRORLEVEL peut détecter et traiter
  • h-1 ne retourne aucune ligne d'en-tête (IF ensembles de données sont retournés)
  • Je mis quoted_identifier (ce qui a fait exploser au visage une fois, j'oublie comment ou pourquoi, et je l'ai inclus depuis) ​​
  • base de données pour se connecter à d
  • i exécuter le script suivant et la sortie lorsqu'elles sont effectuées
  • > dirige toute sortie dans le fichier spécifié pour un traitement ultérieur

SQLCMD et. Al. avoir de nombreux paramètres, consultez-les dans la documentation en ligne. D'autres subtilités peuvent être obtenues avec des paramètres de lot.

Questions connexes