【发布时间】:2016-11-19 02:00:45
【问题描述】:
我正在编写一个脚本,以在 Linux 上使用 SQLCMD 重新加载表,连接到 Azure SQL 数据仓库数据库。
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
脚本继续运行,每个后续批次都相同 SqlState 24000,游标状态“警告”无效
如果我注释掉 INSERT 语句,脚本会按预期运行而不会发出警告。我推测 INSERT 语句没有关闭游标,然后后续命令会收到警告,这应该被视为错误并结束执行。 (我在 sqlcmd 调用中打开了 -b 标志。)
将脚本分成多个部分是我唯一的解决方案吗?
【问题讨论】:
-
我为此提出了一个 SR,并被报告为一个已知错误。
-
你能不能通过从这里下载 msqlcli 来尝试做同样的事情,看看你是否得到同样的错误:blogs.technet.microsoft.com/dataplatforminsider/2017/12/12/…
标签: sqlcmd azure-sqldw