我安装了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:
答案 0 :(得分:1)
如果对SQL Server使用jTDS JDBC Driver,则可以使用Windows身份验证。 jTDS驱动程序是免费的,开源的,通常比官方的Microsoft驱动程序更强大。
如果在项目中包含jTDS jar,我相信这个数据源URL应该可以工作:
jdbc:jtds://localhost:1433/MyDatabase;domain=Stefana
因为您在Windows上运行,所以jTDS驱动程序能够使用本机库自动使用您当前的凭据登录。但是,明确指定用户名和密码通常是一个更好的主意,因为这样您的网络应用程序的行为就会有所不同,具体取决于谁启动它。
另请注意,默认情况下,SQL Server 2008可能不会启用TCP连接。除非你打开它,否则你将无法连接Microsoft驱动程序或jTDS。
启用TCP连接:
答案 1 :(得分:0)
这不是正确的做法。
您拥有该数据库吗?你的配置说“localhost”,所以我假设是的。您应该从SQL Server使用另一个用户名和密码,而不是Windows身份验证。我将为此应用程序创建一个单独的用户。只允许它访问应用程序模式,并授予完成任务所需的最小权限(例如,如果不需要,则不需要DELETE权限;如果不需要,则不能访问SYSTEM表;如果不需要,则不运行存储过程。)
更好的解决方案是使用JNDI数据源,而不是机器上的纯文本密码。
答案 2 :(得分:0)
替换属性:
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase" />
有:
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase;" />
完成!!!