2010-07-15 2 views
8

Je voudrais avoir un fichier BAT ouvrir un script de serveur SQL. Actuellement, j'ai ce code dans le fichier sql:Comment exécuter un script à l'aide d'un fichier BAT?

declare @path varchar(255), @mydb varchar(50) 
SELECT @mydb = 'timeclockplus' 
select @path = 'C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Backup\' 
      + @mydb + '-' + convert(varchar(8),getdate(),112) + '.bak' 
BACKUP DATABASE @mydb TO DISK = @path 

Comment ouvrir ce fichier SQL à partir d'un fichier BAT?

Je suis actuellement en train de l'exécuter comme ceci:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql -E 
    -S Sql server-hl7\timeclockplus timeclockplus.sql -oresults.txt 

mais OSQL n'existe pas dans le répertoire Binn,

Répondre

16

Vous devriez appeler l'outil en ligne de commande sqlcmd de votre fichier batch. En supposant que votre fichier sql est « backup.sql », la ligne de commande serait quelque chose comme:

sqlcmd -E -S yoursqlinstance -i backup.sql 

-E utilise une connexion de confiance, remplacer par -U et -P si vous avez besoin de spécifier un nom d'utilisateur et mot de passe SQL. Voir aussi this article with examples.

+0

+1: J'étais trop lent, lien supplémentaire: http://msdn.microsoft.com/en-us/library/ms165702.aspx –

+0

Bon lien, ajouté à la réponse. – driis

+0

Bonjour monsieur, Mais comment est le codage entier sur la façon de créer le fichier batch? – WTFZane

0

Démarrer> Exécuter> Type Cmd.

MyDrive: \ myPath \ myBat.bat

=)

4
sqlcmd -S 127.0.0.1 /E -i MySqlScript.sql 

Remplacer/E avec/U et/P si vous n'avez pas de connexion de confiance

3

Si vous voulez un bien meilleure réponse, la voici:

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
:: batch file for sql query 
SET FIELDVAL=Empty 
SET DBNAME=MYDB 
SET SQLSTRING=SELECT column_name(s)^ 
FROM table_name1^ 
INNER JOIN table_name2^ 
ON table_name1.column_name=table_name2.column_name^ 
AND table_name2.field=%FIELDVAL% 
ECHO !SQLSTRING! 

ECHO. 
sqlcmd.exe -b -S localhost -E -d !DBNAME! -Q "!SQLSTRING!" -W 
ECHO Query is done. Hit any key to close this window.... 
pause>nul 
Questions connexes