2012-05-30 3 views
2

У меня есть сценарий, который мне нужно выполнить с помощью пакетного файла. Я использую SQLCMD в пакетном файле для запуска скрипта? Кроме того, скрипт вставляет данные в таблицу в базе данных. Как мне отформатировать SQLCMD в пакетном файле, чтобы он знал, с какой базой данных он должен работать?Выполнение скрипта SQL Server из командного файла

ответ

8

Прежде всего сохраните свой запрос в текстовом файле sql (текстовый файл с расширением .sql). Обязательно добавьте инструкцию USE в начале, которая сообщает серверу, с какой базой данных вы хотите работать. Используя пример из MSDN:

USE AdventureWorks2008R2; 
GO 
SELECT p.FirstName + ' ' + p.LastName AS 'Employee Name', 
a.AddressLine1, a.AddressLine2 , a.City, a.PostalCode 
FROM Person.Person AS p 
    INNER JOIN HumanResources.Employee AS e 
     ON p.BusinessEntityID = e.BusinessEntityID 
    INNER JOIN Person.BusinessEntityAddress bea 
     ON bea.BusinessEntityID = e.BusinessEntityID 
    INNER JOIN Person.Address AS a 
     ON a.AddressID = bea.AddressID; 
GO 

Затем в пакетном файле, запустить SQLCMD и передать его в файл SQL (с пути) в качестве параметра.

SQLCMD -S MYSERVER \ имя_экземпляра -i C: \ myScript.sql

Если требуется аутентификация, а также, вам нужно добавить в -U и -P параметров вашего SQLCMD команда.

Настоящая статья MSDN, посвященная sqlcmd utility с более подробной информацией.

3

Используйте переключатель -S, чтобы указать имена серверов и экземпляров, например. -S MyDbServer\Database1

SQLCMD документация found here.

1

Если вы хотите, чтобы выполнить все .SQL файлы (несколько SQL скриптов в папке) для нескольких базы данных, то создайте пакетный файл «RunScript-All.bat» с содержанием ниже

echo "======Start - Running scripts for master database=======" 
Call RunScript-master.bat 
echo "=======End - Running scripts for master database==========" 
pause 
echo "=====Start - Running scripts for model database========" 
Call RunScript-model.bat 
echo "=======End - Running scripts for master database==========" 
pause 

Определение для отдельной партии файл для конкретной базы данных, т.е. «RunScript-master.bat» может быть написано в соответствии с ниже

for %%G in (*.sql) do sqlcmd /S .\SQL2014 /U sa /P XXXXXXXXX /d master -i"%%G" 
::pause 

Создать много файлов для различных баз данных и вызывать их из «RunScript-All.bat».

Теперь вам будет нужно запустить все скрипты sql во многих базах данных, нажав на пакетный файл «RunScript-All.bat».

Смежные вопросы