我正在尝试对尝试插入/追加到 Azure SQL 数据库时遇到的错误进行故障排除。
我得到的错误:
错误:在 DB 中写入数据 (353):在“NoTable”上运行 PreSQL 时出错:Microsoft OLE DB Provider for SQL Server:只有在使用列列表时才能指定表“CHART”中标识列的显式值,并且IDENTITY_INSERT 为 ON。\42000 = 8101
我用来执行插入的工具是Alteryx 10.0,这是一个出色的数据混合和高级分析工具,特别是 Write Data In-Database 工具。
自周六早上以来,我一直试图解决这个问题,但没有运气。今天晚上我决定查看 OLE 连接字符串,看看它是否为我提供了任何线索。我在连接字符串中遇到了Use Procedure To Prepare参数。文档表明此参数指示如何创建和释放临时存储过程。有两种可能的设置:
准备好命令时会创建一个临时存储过程。释放会话时会删除所有临时存储过程。
准备好命令时会创建一个临时存储过程。当命令未准备好、指定新命令或释放所有应用程序对该命令的引用时,该过程将被删除。
问题一:临时存储过程是否依赖全局临时表?如果是这样,这是否是我的错误的原因,因为 Azure SQL 数据库不支持全局临时变量?
问题2:参数是Use Procedure To Prepare
可选的吗?如果这实际上是我遇到的问题,希望我可以从连接字符串中删除此参数并避免创建全局临时表。
编辑:尽管错误消息表明我正在尝试插入身份列,但我不是。我相信指定“No Table”的错误消息的开头是系统正在寻找Azure SQL 不支持的全局临时表的提示
提前感谢您的输入。