Вставить запрос работает в SSMS, но не в SQLCMD - PullRequest
0 голосов
/ 10 июля 2020

У меня есть 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)))

1 Ответ

1 голос
/ 10 июля 2020

Удалите сценарий создания таблицы из используемого вами каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...