2012-06-10 34 views
0

當它是SQL Server 2008 R2時,我成功連接到了我的數據庫。 但是升級到SQL Server 2012後,我得到以下錯誤在我的Java代碼 應用服務器,我現在用的就是Tomcat7升級到SQL Server 2012後,Tomcat無法使用jdbc打開數據庫

的錯誤如下:

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) 

在上下文中的連接字符串.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> 

我可以通過在Eclipse中打開數據連接成功連接到數據庫,並且事實上生成的連接字符串與我在上面重現的context.xml中的url完全相同。

有沒有人有任何想法?

謝謝!

+0

運行應用程序服務器的用戶是否擁有足夠數據庫權限? –

+0

嗨馬克。如果我使用'integratedSecurity = true'(如上面的URL),用戶權限是否相關?謝謝 – gordon613

+0

當然,「integratedSecurity」意味着運行應用程序服務器的Windows用戶在SQL服務器上用於授權。如果該用戶對數據庫沒有任何權限,則無法打開它。 –

回答

0

確保您運行應用程序服務器的用戶擁有足夠的數據庫權限。

相關問題