Я работаю над сценарием, чтобы перезагрузить таблицу, используя SQLCMD в Linux, подключающуюся к базе данных Azure SQL Data Warehouse.sqlcmd на Azure SQL Data Warehouse - SqlState 24000, Неверное состояние курсора после инструкции INSERT
После завершения оператора INSERT, следующий оператор не может (но не заканчивается Sqlcmd выполнения) с «предупреждением»
insert into
schema.table_temp
(
...list of columns
)
select
...list of columns
from
schema.table
;
GO (COMMENT -> в сценарии, но не отражен в журнале.)
(0 rows affected)
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES t WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'schema' AND TABLE_NAME = 'table_nox')
DROP TABLE schema.table_nox
;
GO (COMMENT -> в сценарии, но не повторил в журнале)
SqlState 24000, Invalid cursor state
сценарий с. ontinues для запуска каждой последующей партии, получающей то же самое SqlState 24000, Неверное состояние курсора «предупреждение»
Если я прокомментирую инструкцию INSERT, сценарий будет работать без предупреждения, как и ожидалось. Я предполагаю, что инструкция INSERT не закрывает курсор, а затем последующие команды получают предупреждение, которое должно действительно считаться эром и завершать выполнение. (У меня есть флаг -b в вызове sqlcmd.)
Мое единственное решение, чтобы разбить скрипт на несколько частей?
Я поднял SR на этом и сообщил, что это известная ошибка. – Steve
вы можете попробовать сделать то же самое с msqlcli, загрузив его здесь и посмотрите, получаете ли вы такую же ошибку: https: //blogs.technet.microsoft.com/dataplatforminsider/2017/12/12/try-mssql-cli- a-new-interactive-command-line-tool-for-sql-server/ – TheGameiswar