freeTDS bash: l'Exécution de requêtes sql dans Microsoft SQL server
Je suis en mesure de se connecter à un Serveur Microsoft SQL server 2008 exemple au travers d'une machine virtuelle Linux Mint à l'aide de freeTSD et de la ligne de commande pour exécuter des instructions sql sur elle. Maintenant, je veux automatiser cela dans un script bash. Je suis en mesure de réussir la connexion dans mon script bash:
TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password
J'ai ensuite ma requête SQL:
USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit
Cela fonctionne quand le faire manuellement via freeTSD ligne de commande, mais pas quand je l'ai mis dans le fichier bash. J'ai suivi ce post: freeTSD & bash.
Voici mon script bash exemple:
echo "USE dbname GO delete from schema.tableA where userid > 5 go delete from schema.tableB where userid > 5 go delete from schema.tableC where ID > 5 GO exit" > tempfile | TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
la sortie du script bash est:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Default database being set to sbdb
1> 2> 3> 4> 5> 6> 7> 8>
et puis le reste de mon script est exécuté.
Quelqu'un peut me donner étape par étape de réponse à mon problème ?
OriginalL'auteur | 2012-10-27
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de savoir comment votre échantillon peut travailler à tous.
Voici mon script bash exemple:
Essayez d'utiliser un ';' char.
Mieux encore, l'utilisation de shell "documents".
IHTH.
Actuelle entrée de ligne de commande:
Voir les modifications, désolé. Mais non, pas de sortie, elle est entrée à tsql via shell ici des documents. Désolé, mais mpossible pour lire le reste de votre commentaire, pouvez-vous mettre à jour votre question à la place? (Départ pour la journée, peut-être en mesure de regarder votre réponse à partir de la maison, mais plus probablement pas jusqu'à demain.) Bonne chance.
J'ai modifié, des idées ? @Shellter
Je ne vois pas de différence significative d'avant. 1. Comprenez-vous sur shell "documents", vous voyez le
<<EOS
à la fin de ma ligne qui commence avecTDSVER=8.0 tsql ...
? C'est une technique clé. 2. mais je ne suis pas sûr que cela permettra de résoudre votre problème, basé sur les réponses que vous avez inclus dans votre d'autres posts sur les problèmes avec des TDS. Quelque chose au sujet de l'aide d'un numéro de version inférieur semblait qu'il pourrait aider, mais vous pourriez avoir besoin d'installer le numéro de version inférieur.3. le fond de bloc dans ma réponse à été ajouté/modifié dans ma réponse par BryanH. Je ne pense pas que c'est la bonne façon d'essayer de résoudre votre problème, et avec une
echo ....
de la lecture DANS de</tmp/tempfile
ça N'a PAS de sens. 4. Je suis peut essayer de vous aider, mais j'ai besoin d'une meilleure qualité de l'information sur ce que vous essayez et quels sont les messages d'erreur. Veuillez modifier votre principale question ci-dessus, et utiliser le{}
format outil généreusement pour le rendre facile à lire les questions. 5. Bonne chance! 😉OriginalL'auteur shellter
Vieux thread mais cela semblait fonctionner..
OriginalL'auteur rob
essayer
le reste de cette chaîne sont des choses que peut-être les œuvres
et essayer
et essayer
si vous utilisez odbc, je recommande le deuxième procès.
si vous envoyez des commandes sql avec un "go" mot comme sql phrases séparateur, peut-être que le premier est mieux.
peut-être que la troisième... qui sait... d'essai et d'erreur peut dire...
saisissez la clé", dites-vous que vous utilisez bash, à tout hasard vous utilisez bash dans un environnement Windows (peut-être même Cygwin?). Essayez de changer "\n"s ci-dessus "\r\n". Bonne chance.
OriginalL'auteur