1

我已经安装了 MS SQL Server 2008,我想在带有 Struts 的 Java 项目中使用它。不幸的是,我无法在 Java 中配置它。我正在为 MsSql 使用 Windows 身份验证。那可能吗?

我的 beans.xml 文件看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <!-- S2-Install-Start: INSERT DB SERVER HERE -->
        <property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase" />
        S2-Install-End:
        <property name="username" value="Stefana\Steffi" />
        S2-Install-Start: INSERT DB PASSWORD HERE
        <property name="password" value="" />
        S2-Install-End:
    </bean>

我不知道我应该在用户和密码字段中写什么?当我连接到 Ms Sql Server 时,我得到以下信息:

Servertype: DatabaseEngine

Servername: Stefana\SQLEXPRESS

Authentication: Windows Authentication

Username:Stefana\Steffi

Password:
4

3 回答 3

1

如果您使用jTDS JDBC Driver for SQL Server,则可以使用 Windows 身份验证。jTDS 驱动程序是免费的、开源的,并且通常比官方的 Microsoft 驱动程序更强大。

如果您在项目中包含 jTDS jar,我相信这个数据源 URL 应该可以工作:

jdbc:jtds://localhost:1433/MyDatabase;domain=Stefana

因为您在 Windows 上运行,所以 jTDS 驱动程序能够使用本机库自动使用您当前的凭据登录。但是,明确指定用户名和密码通常是一个更好的主意,因为这样您的 Web 应用程序的行为不会因启动它的人而异。

另请注意,默认情况下 SQL Server 2008 可能不会启用 TCP 连接。除非您打开它,否则您将无法连接 Microsoft 驱动程序或 jTDS 驱动程序。

要启用 TCP 连接:

  • 打开Sql Server 配置管理器(它应该在您的开始菜单上)
  • 在左侧的树中,导航到SQL Server 网络配置,然后导航到MSSQLSERVER 的协议
  • 您应该在协议列表中看到TCP/IP
  • 如果其状态为已禁用,则双击它,并将已启用选项更改为,然后单击确定
  • 您现在需要重新启动 SQL Server。导航到SQL Server 服务
  • 右键单击服务列表中的SQL Server (MSSQLSERVER)
  • 选择重启
  • 您现在应该能够从 Java Web 应用程序连接到 SQL Server
于 2012-06-27T04:09:20.613 回答
0

replace the property:

<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase" />

for:

<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase;" />

Done!!!

于 2015-04-29T14:07:07.883 回答
0

这不是正确的做法。

你拥有那个数据库吗?您的配置显示“localhost”,所以我假设是的。您应该从 SQL Server 为您的应用程序使用另一个用户名和密码,而不是 Windows 身份验证。我会为此应用程序创建一个单独的用户。仅授予它对应用程序模式的访问权,并授予完成其任务所需的最低权限(例如,如果不需要,则没有 DELETE 权限;如果不需要,则不能访问 SYSTEM 表;如果不需要,则不能运行存储过程)。

更好的解决方案是使用 JNDI 数据源,并且在您的机器上没有纯文本密码。

于 2012-06-26T11:53:38.490 回答