<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Spring連接MS SQL Server中出現(xiàn)的錯(cuò)誤

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


    采用Spring中配置Hibernate數(shù)據(jù)庫連接,但邊不上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>


    ==============================================
    錯(cuò)誤如下:

    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

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

    解決辦法:

    首先查看數(shù)據(jù)庫服務(wù)器端口1433是否打開

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

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


    同時(shí):
       <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    一定要寫在同一行,不然會(huì)報(bào)如下的錯(cuò)誤:

    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

    評(píng)論

    # re: Spring連接MS SQL Server中出現(xiàn)的錯(cuò)誤  回復(fù)  更多評(píng)論   

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

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

    如運(yùn)行程序時(shí)出現(xiàn) "Error establishing socket" 錯(cuò)誤,則應(yīng)進(jìn)行如下調(diào)試:


    1 檢查SQL SERVER 是否允許遠(yuǎn)程訪問.具體步驟:

    1)打開"企業(yè)管理器",打開控制臺(tái)根目錄>SQL Server 組>數(shù)據(jù)庫
    2)在相應(yīng)"數(shù)據(jù)庫"上單擊右鍵,選擇"屬性"
    3)選擇"連接"選項(xiàng)卡,檢查"遠(yuǎn)程服務(wù)器連接"下,RPC服務(wù)是否選擇.

    2 使用telnet IP地址 1433,系統(tǒng)是否提示連接出錯(cuò),如系統(tǒng)提示出錯(cuò)
    檢查是否防火墻屏蔽了SQL SERVER 或 java IDE 的網(wǎng)絡(luò)訪問端口
    如果是,關(guān)閉防火墻,重新啟動(dòng)SQL SERVER和java IDE,進(jìn)行測(cè)試,
    如果系統(tǒng)仍提示上述錯(cuò)誤,嘗試下列步驟

    3 檢查SQL SERVER 端口號(hào)及是否啟用了TCP/IP協(xié)議,具體步驟:

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

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

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

    #點(diǎn)選屬性檢查一下port是否正確.

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

    #關(guān)掉防火墻.

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



    主站蜘蛛池模板: 亚洲乱亚洲乱妇24p| 成人免费视频国产| 国产区在线免费观看| 2020久久精品亚洲热综合一本| 精品亚洲一区二区三区在线播放| 成人免费午夜在线观看| 久久美女网站免费| 人成电影网在线观看免费| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 国产精品区免费视频| 成人免费夜片在线观看| 亚洲av中文无码字幕色不卡 | 最近免费字幕中文大全视频| 99久久成人国产精品免费| 看免费毛片天天看| 亚洲av无码一区二区三区天堂| 亚洲欧洲日产国码二区首页| 久久亚洲精品中文字幕无码| 久久亚洲国产精品123区| 一本色道久久88亚洲综合 | 国产精品亚洲四区在线观看| 亚洲精品国产电影午夜| 日韩亚洲AV无码一区二区不卡| 亚洲日韩精品射精日| 国产亚洲精品成人a v小说| 亚洲电影日韩精品| 亚洲国产成人影院播放| 免费中文字幕不卡视频| 国产免费一区二区三区VR| 国产真实伦在线视频免费观看| 毛片基地免费视频a| 成人免费视频网址| 日本免费一区尤物| 波多野结衣视频在线免费观看| 日本免费人成黄页网观看视频| 国产精品成人无码免费| 日本一道综合久久aⅴ免费| 国产精品免费播放| 亚洲人成色7777在线观看不卡 | 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲videosbestsex日本|