Несколько команд sqlcmd в командном файле
У меня есть несколько команд sqlcmd для запуска одновременно из командного файла. Каждое утверждение при выполнении отдельно работает отлично. Но если я даю 5 команд sqlsmd в bat-файле, он выполняет только первую, а затем я вижу 1> на экране командной строки, и ничего не происходит. Как решить это?
Примечание: оператор CALL перед каждой строкой не работал. Это единственное решение, которое я нашел в своем поиске
пример того, что я делаю::
sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L' ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47 , @create_sub_dir = 0 " >> C:\tlogresult.txt
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L' ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47 , @create_sub_dir = 0 " >> C:\tlogresult.txt
3 ответа
Я не могу запустить его через файл bat. Что я могу сделать, так это запускать команды с QUIT в конце каждой команды из командной строки.
Попробуйте заглавную Q
не используйте [-q "cmdline query"]
но вместо этого используйте [-Q "cmdline query" и выйдите из]
https://msdn.microsoft.com/en-us/library/ms180944.aspx
Когда команда выполняется без входных файлов или запросов, sqlcmd подключается к указанному экземпляру SQL Server, а затем отображает новую строку с 1>, за которым следует мигающее подчеркивание, которое называется приглашением sqlcmd. 1 означает, что это первая строка оператора Transact-SQL, а приглашение sqlcmd - это точка, с которой начинается оператор Transact-SQL при его вводе.
В приглашении sqlcmd вы можете вводить как операторы Transact-SQL, так и команды sqlcmd, такие как GO и EXIT. Каждый оператор Transact-SQL помещается в буфер, называемый кэшем операторов. Эти операторы отправляются на SQL Server после ввода команды GO и нажатия клавиши ВВОД. Чтобы выйти из sqlcmd, введите EXIT или QUIT в начале новой строки.
...
Используйте параметр -o для вывода в файл, а не для передачи вывода в файл, и это должно препятствовать переходу в интерактивный режим.
или попробуйте
sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L' ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47 , @create_sub_dir = 0 " >> C:\tlogresult.txt
exit
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L' ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47 , @create_sub_dir = 0 " >> C:\tlogresult.txt"
exit