用一台计算机连接到数据库后,我希望禁止任何其他网络连接。我的第一次尝试是修改网络数据库服务器属性(见下图)以删除 -x tcpip
参数,根据运行 dbsrv16.exe
时获得的帮助屏幕命令,用于“-x:要运行的网络驱动程序的逗号分隔列表 (TCPIP)”。
然而,即使没有这个参数,我仍然能够从另一台计算机进行连接。现在我回到了绘图板,但不知道实现我的目标的另一种可能方法。任何想法将不胜感激!
最佳答案
注意:OP 不清楚目标是阻止所有其他用户(即,将其变成单个用户系统)还是只是阻止给定登录的其他登录尝试。如果实现的逻辑存在阻止任何人登录的错误(例如,修复逻辑),那么前者当然会很危险。
如果这是 SAP/Sybase ASE,我可能会考虑创建一个不允许二次登录的登录触发器。
由于这是 SAP/Sybase SQL Anywhere,我找不到任何对登录触发器的引用(虽然我看起来并不难),我想知道它是否可能是可能:
- create an event based on event_type = CONNECT
- 如果事件发现您已经登录,则不允许连接继续(不确定如何以编程方式执行此操作;是否有 disconnect() 函数调用?或者您可以发出 drop connection statement当前连接?)
正如我已经提到的,如果事件中存在不允许任何人登录的逻辑缺陷,这可能是危险的。[我不知道是否有办法从 SQLAnywhere 外部禁用该事件,或者如果某些登录可以免除基于 CONNECT 的事件...... ???]
关于tcp - 私有(private)化与 SQL Anywhere 16 数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53010515/