2010-07-15 33 views
8

Me gustaría tener un archivo BAT para abrir una secuencia de comandos del servidor sql. Actualmente tengo este código en el archivo sql:¿Cómo ejecuto un script usando un archivo 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 

¿Cómo abro este archivo SQL desde un archivo BAT?

actualmente estoy tratando de ejecutar esta manera:

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

pero OSQL no existe en el directorio Binn,

Respuesta

16

Usted debe invocar la herramienta de línea de comandos sqlcmd de su archivo por lotes. Asumiendo que su archivo sql es "backup.sql", la línea de comandos sería algo así como:

sqlcmd -E -S yoursqlinstance -i backup.sql 

-E utiliza conexión de confianza, en lugar de con -U y -P si es necesario especificar un nombre de usuario y contraseña de SQL. Vea también this article with examples.

+0

+1: yo era demasiado lento enlace, adicional: http://msdn.microsoft.com/en-us/library/ms165702.aspx –

+0

Buen enlace, añadido a la respuesta. – driis

+0

Buenos días señor, ¿Pero cómo está todo el código sobre cómo crear el archivo por lotes? – WTFZane

0

Inicio> Ejecutar> Tipo Cmd.

MyDrive: \ myPath \ Mybat.bat

=)

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

Reemplazar/E con/U y/P si usted no ha confiado en conexión

3

Si desea una respuesta mucho mejor, aquí está:

@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 
Cuestiones relacionadas