<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Spring連接MS SQL Server中出現的錯誤

    Posted on 2008-01-29 09:16 詩特林 閱讀(9282) 評論(1)  編輯  收藏 所屬分類: J2EE


    采用Spring中配置Hibernate數據庫連接,但邊不上SQL Server2000,配置如下:

     <bean id="dataSource"
      class="org.apache.commons.dbcp.BasicDataSource">
      <property name="driverClassName">
       <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
      </property>
      <property name="url">
       <value>
        jdbc:microsoft:sqlserver://cyc:1433;DatabaseName=officeArticle;SelectMethod=cursor
       </value>
      </property>
      <property name="username">
       <value>sa</value>
      </property>
      <property name="password">
       <value>sa</value>
      </property>
     </bean>


    ==============================================
    錯誤如下:

    WARN - Could not obtain connection metadata
    org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
     at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
     at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72)
     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004)
     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:825)
     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:751)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1091)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:396)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:277)
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
     at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:894)
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:857)
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:475)
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
     at org.apache.catalina.core.StandardService.start(StandardService.java:450)
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
     at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
    Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
     at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
     at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
     at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
     at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
     at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
     at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
     at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
     at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
     at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
     ... 41 more

    ==============================================

    解決辦法:

    首先查看數據庫服務器端口1433是否打開

    在命令提示符中輸入命令:netstat -an如果沒有tcp:0.0.0.0:1433說明1433端口沒打開,需要下載SQL Server2000的sp3或sp4補丁。
    我試了幾個補丁,最后成功的是SQL2000-KB884525-SP4-x86-CHS.EXE
    下載地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5&DisplayLang=zh-cn
    下載后執行EXE文件,會出現安裝包SQL2KSP4,執行setup.bat安裝程序。
    如果有掛起需要重啟計算機現象,請在運行中輸入regedit打開注冊表編輯器,在HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations項目,并刪除它,這樣就可以清除安裝暫掛項目。
    安裝成功后再執行netstat -an有tcp:0.0.0.0:1433說明1433端口已打開。

    需要有msbase.jar、mssqlserver.jar、msutil.jar這三個jar包
    下載地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&DisplayLang=en
    setup.exe文件。
    下載后執行exe文件,這三個jar包將被默認安裝在C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib文件夾下,這里只有這三個jar包是有用的,完全可以把它們放在其它位置,只要知道路徑即可。


    同時:
       <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    一定要寫在同一行,不然會報如下的錯誤:

    org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
       jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=officeArticle;SelectMethod=cursor
       '
    org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
       jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=officeArticle;SelectMethod=cursor
       '
    org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
       jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=officeArticle;SelectMethod=cursor
       '
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
     at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
     at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:112)
     at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
     at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:167)
     at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:207)
     at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:187)
     at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:127)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:707)
     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:572)
     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:737)
     at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:764)
     at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:753)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1057)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:378)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
     at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:894)
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:857)
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:475)
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
     at org.apache.catalina.core.StandardService.start(StandardService.java:450)
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
     at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
    Caused by: java.sql.SQLException: No suitable driver
     at java.sql.DriverManager.getDriver(Unknown Source)
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
     ... 51 more

    評論

    # re: Spring連接MS SQL Server中出現的錯誤  回復  更多評論   

    2008-01-29 09:35 by BeanSoft
    寒一個 這個和 Spring 沒任何關系,就是 SQL Server 沒啟用 TCP 支持。可以不下補丁也能解決。

    jdbc配置語句為: jdbc:microsoft:sqlserver://server_name:1433

    如運行程序時出現 "Error establishing socket" 錯誤,則應進行如下調試:


    1 檢查SQL SERVER 是否允許遠程訪問.具體步驟:

    1)打開"企業管理器",打開控制臺根目錄>SQL Server 組>數據庫
    2)在相應"數據庫"上單擊右鍵,選擇"屬性"
    3)選擇"連接"選項卡,檢查"遠程服務器連接"下,RPC服務是否選擇.

    2 使用telnet IP地址 1433,系統是否提示連接出錯,如系統提示出錯
    檢查是否防火墻屏蔽了SQL SERVER 或 java IDE 的網絡訪問端口
    如果是,關閉防火墻,重新啟動SQL SERVER和java IDE,進行測試,
    如果系統仍提示上述錯誤,嘗試下列步驟

    3 檢查SQL SERVER 端口號及是否啟用了TCP/IP協議,具體步驟:

    1)打開"企業管理器",打開控制臺根目錄>SQL Server 組>數據庫
    2)在相應"數據庫"上單擊右鍵,選擇"屬性"
    3)選擇"常規"選項卡,點擊"網絡配置",如啟用的協議中無"TCP/IP協議"將其加入
    4)選擇"TCP/IP協議",點擊"屬性",檢查其端口號是否為1433
    5)如端口號為1433將其修改為其它端口號,修改jdbc連接語句,將端口號同樣改為新啟用的端口號,如jdbc:microsoft:sqlserver://server_name:1400(假設新端口號為 1400)

    以下的方法你每種的去試試:
    #檢查一下sql server的connection有沒有full.

    #如果是認證的問題.
    可到sql enterprice manager->指定server->內容->安全性.
    把驗證改為 SQL server 及 windows.

    #點選屬性檢查一下port是否正確.

    #執行%MSSQL_HOME%\80\Tools\Binn\SVRNETCN.exe
    把TCP/IP啟用.

    #關掉防火墻.

    #把SQL server update到sp3:
    http://www.microsoft.com/sql/downloads/2000/sp3.asp



    主站蜘蛛池模板: 久久aⅴ免费观看| 国产成人精品免费视频动漫| 久久精品国产亚洲综合色| 在线观看永久免费| 免费无码一区二区| 亚洲国产精品线在线观看| 免费看美女被靠到爽| 青青操在线免费观看| 亚洲综合无码一区二区痴汉| 亚洲中文字幕无码一区二区三区 | 三年片在线观看免费西瓜视频 | 免费观看在线禁片| 亚洲精品GV天堂无码男同| 国产精品亚洲一区二区三区在线| 9久9久女女免费精品视频在线观看 | 美女露隐私全部免费直播| 五月天网站亚洲小说| 五月婷婷亚洲综合| 免费能直接在线观看黄的视频| 四虎国产精品永免费| 久久综合久久综合亚洲| 亚洲精品国产精品乱码不99| 日日AV拍夜夜添久久免费| **一级一级毛片免费观看| www免费黄色网| 久久亚洲精品无码网站| 亚洲无人区视频大全| 在线a亚洲v天堂网2019无码| 日韩免费高清视频| 国产成人免费网站| 三年片在线观看免费观看大全一| 香蕉视频免费在线播放| 亚洲熟妇AV一区二区三区浪潮| 亚洲爱情岛论坛永久| 337p日本欧洲亚洲大胆裸体艺术| 精品国产免费一区二区| 一个人在线观看视频免费| 4399影视免费观看高清直播| 免费福利电影在线观看| 9久热这里只有精品免费| 亚州**色毛片免费观看|