从 ASE 中的另一个会话查询 'COMPATIBILITY_MODE' ON / OFF 的状态

Query the state of 'COMPATIBILITY_MODE' ON / OFF from another session in ASE

从 Sybase ASE 15.0.3 开始,可以在会话中将所谓的 COMPATIBILITY_MODE 设置为 ONOFF 以及 SQL 或 ESQL/C 命令:

SQL SET COMPATIBILITY_MODE ON

这也可以配置为服务器范围的选项,但这并不是这里的意思。

问题是,如果可以从另一个会话查询,例如使用SQL,给定会话的实际值。

是的,对于给定的 SPID,您可以检查进程的 SUID 和 运行:

dbcc traceon(3604)
go
dbcc pss(@suid, @spid)
go

在你的输出中,例如:

...
poptions=7 (OPT_TRUNCABORT) 8 (OPT_ARITHABORT) 40 (OPT_PREFETCH) 
41 (OPT_TRIGGERS) 42 (OPT_REPLICATION_1) 43 (OPT_REPLICATION_2) 
48 (OPT_TRANSRPC) 58 (OPT_REMOTE_INDEXES) 62 (OPT_STMT_CACHE) 
64 (OPT_PROC_RETURN_STATUS) 65 (OPT_PROC_OUTPUT_PARAMS) 
84 (OPT_LITERAL_AUTOPARAM) 93 (OPT_COMPATIBILITY_MODE) 
107 (OPT_FDP_CURRENCY) 
...

标志OPT_COMPATIBILITY_MODE表示此会话已打开兼容模式。