java sybase连接与无效的数据库名称

时间:2013-10-01 07:27:37

标签: java sybase-ase

我使用JDK7u25和JConnect_JDBC3.jar连接到Sybase ASE(它似乎是Sybase JDBC 6.0版)。

我的网址如下:

jdbc:sybase:Tds:MYSERVER:5004/myDB

我可以毫无问题地连接到服务器。

但是,即使我在URL中指定了错误的数据库名称,我也可以连接:

jdbc:sybase:Tds:MYSERVER:5004/myDBaa

OR

jdbc:sybase:Tds:MYSERVER:5004/wrongDB

OR

JDBC:SYBASE:TDS:MYSERVER:5004 /

那么,如果我在URL中指定了错误的数据库名称或没有数据库名称,它为什么允许连接我?

1 个答案:

答案 0 :(得分:1)

您已成功连接到服务器,但我怀疑在您的连接打开后,如果您检查了所连接的数据库,则会列出master

只要您连接的用户是public数据库中的有效用户(或master等有效组的成员),您的连接就会成功 - 只是不正确D b。如果将用户的默认数据库更改为myDB,则尝试连接到无效数据库会将其默认为myDB。

**以下内容可能会破坏 - 请自担风险* *

可以将访客用户从主用户中删除,但无法通过sp_dropuser完成。

首先,您必须启用对系统表的手动更新:

sp_configure 'allow udpates to system tables', 1

接下来,您将从master..sysusers

手动删除访客用户
delete from master..sysusers where name = "guest"

最后关闭系统表的手动更新以防止意外损坏:

sp_configure 'allow updates to system tables', 0

如果用户未指定正确的数据库,则应阻止用户连接到您的系统。它还会阻止用户连接未获得默认数据库权限的用户。

如果您需要撤消此更改,只需将访客用户添加回主数据库:

sp_adduser guest