【问题标题】:How and how to replace the GO batch separator?如何以及如何更换 GO 分批器?
【发布时间】:2021-10-06 14:33:48
【问题描述】:

我编写了一个向 Ase Sybase 服务器发送 sql 查询的程序。 这个奇迹在 Ado Net Core.AseClient 的帮助下发挥了作用,并且总体上成功地解决了这个问题。

关键功能是一次向多个选定的服务器发送请求。这很方便,但是当涉及到带有 GO 分隔符的长程序时,这里它成功报告:

'go' 附近的语法不正确

我知道为什么会发生这种情况,因为 Transact-SQL 不支持此分隔符。当然,GO 运算符被 SQL Server Management Studio (SSMS)、sqlcmd 和 osql 识别,但我对在 AseClient 上工作的拐杖感兴趣。

【问题讨论】:

  • 您需要在 GO 分隔符上拆分完整的命令文本,并作为单独的请求发送
  • go 不是 ASE 所理解的 T-SQL 语言的一部分; go 是客户端命令;这告诉客户端(例如,isql)何时向数据服务器提交批处理/请求/操作;正如 Hans 所提到的,您需要将 go 子句替换为您的应用程序用于向数据服务器提交新批处理/请求/操作的任何内容
  • 问题到底是什么?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: c# sql sybase


【解决方案1】:

因为正如您提到的go 命令不是事务命令,SQL Server 无法识别它。 只有像 sqlcmd 和 SSMS 这样的 sql server 客户端可以从中受益,将单独的事务批次发送到 sql server。

所以你的sql客户端(AseClient)没有这个功能。

阅读更多关于 go 命令here

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2023-03-23
    • 2020-06-15
    • 2021-04-05
    • 2017-04-21
    • 2016-12-20
    相关资源
    最近更新 更多