Sql server 升级到SQL Server 2012后,Tomcat无法使用jdbc打开数据库

Sql server 升级到SQL Server 2012后,Tomcat无法使用jdbc打开数据库,sql-server,jdbc,sql-server-2008-r2,tomcat7,Sql Server,Jdbc,Sql Server 2008 R2,Tomcat7,我在SQL Server 2008 R2上成功连接到数据库。 但是,升级到SQL Server 2012后,我的java代码中出现以下错误 我使用的应用服务器是Tomcat7 错误如下: Jun 10, 2012 1:56:10 PM org.apache.naming.NamingContext lookup WARNING: Unexpected exception resolving reference com.microsoft.sqlserver.jdbc.SQLServerExcep

我在SQL Server 2008 R2上成功连接到数据库。 但是,升级到SQL Server 2012后,我的java代码中出现以下错误 我使用的应用服务器是Tomcat7

错误如下:

Jun 10, 2012 1:56:10 PM org.apache.naming.NamingContext lookup
WARNING: Unexpected exception resolving reference
com.microsoft.sqlserver.jdbc.SQLServerException: Cannot open database "MyDB" requested by the login. The login failed.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
context.xml中的连接字符串为

<Resource name="jdbc/theDB" type="javax.sql.DataSource" auth="Container"
            factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
            driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" initialSize="30"
            maxActive="100"
        url="jdbc:sqlserver://localhost:1433;databaseName=MyDB;integratedSecurity=true"
            />

以下内容在web.xml中

<resource-ref>
<description>My Database</description>
<res-ref-name>jdbc/theDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

我的数据库
jdbc/theDB
javax.sql.DataSource
容器
通过在Eclipse中打开数据连接,我可以成功地连接到数据库,事实上,生成的连接字符串与我在上面复制的context.xml中的url相同

有人有什么想法吗


谢谢大家!

确保运行应用程序服务器的用户对数据库有足够的权限。

运行应用程序服务器的用户对数据库有足够的权限吗?Hi标记。如果我使用
integratedSecurity=true
(如上面的URL所示),是否与用户权限相关。谢谢您当然是这样,
integratedSecurity
意味着运行应用程序服务器的Windows用户用于在SQL server上进行授权。如果该用户没有DB的任何权限,则无法打开它。Hi Mark。谢谢你的评论。我以用户管理员身份登录,并转到用户并添加了新用户/管理员。我仍然得到同样的错误。(在接下来的几天里,我将更多地关注这个方向…)但是为什么我可以毫无问题地连接Eclipse?谢谢…Eclipse可能是在与应用服务器不同的用户下运行的。