私有化与SQL Anywhere 16数据库的连接

时间:2018-10-26 14:05:33

标签: tcp database-connection sqlanywhere sybase-asa

用一台计算机连接到数据库后,我希望禁止任何其他网络连接。我的第一次尝试是修改网络数据库服务器属性(请参见下图),以删除-x tcpip参数,根据运行dbsrv16.exe命令时获得的帮助屏幕,该参数用于“ -x:逗号分隔的要运行的网络驱动程序列表(TCPIP)”。

Service Properties

但是,即使没有此参数,我仍然能够从另一台计算机进行连接。现在,我回到了绘图板上,但是不知道实现目标的另一种可能方法。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

注意:在OP中尚不清楚目标是阻止所有其他用户(即,将其变成单个用户系统)还是仅阻止给定登录的其他登录尝试。如果所实现的逻辑存在一个错误,该错误会阻止任何人登录(例如,修复逻辑),那么前者当然很危险。

如果这是SAP / Sybase ASE,那么我可能会考虑创建一个不允许再次登录的登录触发器。

由于这是SAP / Sybase SQL Anywhere,而且我找不到任何登录触发器的引用(尽管我看上去并不很坚强),我想知道是否可能可能:

  • create an event based on event_type = CONNECT
  • 如果事件显示您已经登录,则不允许继续进行连接(不确定以编程方式如何执行此操作;是否存在Disconnect()函数调用?或者您可以发出{{3} }上的当前连接?)

正如我已经提到的,如果事件中存在逻辑缺陷,该逻辑缺陷会禁止任何人登录。这可能很危险。[我不知道是否有办法从SQLAnywhere外部禁用该事件,或者如果某些登录可以免于基于CONNECT的事件... ???]