Sybase在使用ASE ISQL实用程序时会丢失数据



我管理在Solaris(11)上运行的Sybase ASE(15.0.7)数据库。我是Sybase ASE的新手,但我对处理SQL Server等数据库有着相当全面的了解。最近,当我在做上传程序员脚本等任务时,有人告诉我不要将其与ASE ISQL实用程序一起使用,直接从命令行实用程序(ISQL)中使用,因为否则会丢失部分数据。我很困惑,当把脚本交给DB时,它怎么可能会丢失任何东西。我试着和工作人员讨论这个问题,说这听起来很糟糕。

我们中没有一个人是真正的Sybase经验丰富的管理员,通常他们不会给我任何有争议的答案。所以他们只是声称ASE isql是否定的。

这真的是真的吗?

这绝对不是真的。Sybase命令行实用程序"isql"被Sybase客户大量使用。我认为混淆可能是因为isql不执行"自动提交",这在许多其他数据库的客户端工具中很常见。因此,当您在默认的非绑定事务模式下启动显式事务(BEGIN transaction)时,或者当您在链接事务模式下运行时,并且当您退出"isql"时,则该事务未提交,因此ASE服务器将回滚它。这可能被解释为"数据丢失",但事实并非如此。因此,在ASE中,您应该显式COMMIT事务,否则它最终将被回滚。

(为了完整起见,在默认的非绑定事务模式中,如果不使用BEGIN transaction,那么每个DML命令都会在准备好后立即提交。这与自动提交不同,尽管有时会这样调用。)

相关内容

最新更新