MS SQL 无法连接 JDBC...权限问题?

MS SQL 无法连接 JDBC...权限问题?

我使用“sa”创建了一个用户“secure1”,并且我可以使用 Management Studio 在本地和远程以 secure1 的身份进行连接。

然后,当我使用 url 切换到 JDBC 时(我在下面的 url 中使用了两个 \,但是 stackexchange 删除了另一个斜杠,因为 java 将 \ 视为转义序列)

jdbc:sqlserver://192.168.111.111\MYDBQA:1433;初始目录=mydatabase

我只是收到“登录被拒绝”的提示。如果我删除初始目录,就会收到“登录被拒绝”的提示。我最终为 secure1 用户赋予了 sysadmin 服务器角色,以及他已有的公共角色。

目前,在“mydatabase”的用户映射中,我授予了他除 db_deny** 之外的所有权限。我还将他添加到 master、model、msdb、tempdb 并标记了除 db_den*** 之外的所有权限,尽管这也不起作用。

我首先要问一个更重要的问题,这样我才能先完成一些工作……

  1. 如何使其工作,或者是否有关于在某处设置 MS SQL 以进行 JDBC 连接的文档?

然后让它变得更好一点......

  1. 如何正确设置它,以便我的用户可以读取/写入/创建/更新“mydatabase”中的所有表,但不能在任何其他数据库中执行任何其他操作。

注意:我可以通过 JDBC 顺利地与“sa”用户连接。

谢谢,Dean

答案1

院长,

有几件事。

  1. 撤消对其他数据库所做的所有权限更改,这些更改都不是必需的。最好删除您创建的用户,这反过来会删除所有其他权限更改。
  2. 重新创建您的用户,不要给他们任何服务器角色,只需创建用户。
  3. 在“用户映射”部分中,将您的 myDatabase 分配给它并授予 db_owner 权限。(仅完全控制此数据库)
  4. 确保您已在 SQL Server 配置工具中启用了 TCP/IP 协议。

现在就试试。

更新:

您的连接字符串错误。您似乎正在使用 SQL Server 的命名实例,并且该命名实例未使用默认端口号。您运行 SQL Browser 服务是件好事,但您的连接字符串应该更像这样:

jdbc:sqlserver://serverName;instanceName=instance1;integratedSecurity=true;<more properties as required>;

相关内容