У меня есть SQLCMD, настроенный для запуска в пакетном сценарии:
sqlcmd -S <SQL Server Instance> -U <USER NAME> -P <PASSWORD> -i "<Path to .sql file>"
Примечание. Мне нужны кавычки в пути к файлу, потому что в нем есть пробелы
. sql файл выглядит примерно так.
INSERT INTO Table2 (Col1, Col2, Col3)
SELECT Col1
,Col2
,Col3
FROM Table1
Когда я выполняю SQL в Sql Server Management Studio, он работает нормально. Я помещаю паузу в файл .bat, и он дает сообщение.
Msg 2714, уровень 16, состояние 6, сервер, строка 1 В базе данных уже есть объект с именем «Table2».
Вот запрос (конечно, запутанный):
INSERT INTO Table1 (Col1, Col2,Col3,Col4,Col5,Col6)
SELECT Col1
,Col2
,Col3
,Col4
,Col5
,cast(getdate() as date) as 'Col6'
FROM OrigTable
WHERE exists(SELECT *
FROM ChkTable
WHERE DateCol > '20140101'
and OrigTable.Col1 = ChkTable.Col1)
and not exists(SELECT *
FROM Table1 inner join (SELECT max(Col6) as 'TopDate'
,Col1
FROM Table1
GROUP BY Col1) a
on Table1.Col6 = a.TopDate
and Table1.Col1 = a.Col1
WHERE Table1.Col1 = OrigTableCol1
and (Table1.Col5 = OrigTable.Col3
or isnull(Table1.Col4,1) = isnull(OrigTable.Col4,1)))