zoukankan      html  css  js  c++  java
  • 在Spring中配置SQL server 2000

    前言

      Lz主要目的是在Spring中配置SQL server 2000数据库,但实现目的的过程中参差着许多SQL server 2000的知识,也包罗在本文记载下来!(Lz为什么要去搞sql server2000而不去搞2005或2008的,Lz所处的环境需求,这点是小问题,别在意)

    Spring里面主要的配置

    1 <property name="driverClass">
    2             <value>net.sourceforge.jtds.jdbc.Driver</value>
    3         </property>
    4         <property name="jdbcUrl">
    5             <value>jdbc:jtds:sqlserver://localhost;DatabaseName=snack</value>
    6         </property>
    7         <property name="user">
    8             <value>sa</value>
    9         </property>
    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>

      主要导入的jar包有jtds-1.2.5.jar,上面的localhost也可以写成localhost:1433,两者都可以运行,在这配置前,记得得先测试下你的sql server端口弄好了没!

    在spring中配置sqlserver的数据源时出现:com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z

      网上大多是以下面的方式来配置的,导入的包有msbase.jar、mssqlserver.jar、msutil.jar,但我配了很久都没成功,上网查了下原因,有人说是microsoft存在的bug,说是在java代码调原驱动是没有问题的,但在hibernate就不是了。所以就改成了我现在的配置,行得通

    <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
    <property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hibernate</property>

    在这种配置时,我是出现了以下错误,一开始我查了好久sessionFactory的bean里面,但最后却是改了bean为dataSource的上面这两句来解决的

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [E:Workspace131112_snacksnackClientsrcapplicationContext.xml]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z

    SQL Server 不能创建数据库,发生错误:1807 未能获得数据库 'test' 上的排它锁。请稍后重试操作。

      在sql 查询分析器的test数据库运行下面的语句

    declare   @sql   varchar(100)   
      while   1=1   
      begin   
      select   top   1   @sql   =   'kill   '+cast(spid   as   varchar(3))   
      from     master..sysprocesses       
      where   spid   >   50   and   spid   <>   @@spid     
      if   @@rowcount   =   0   
          break   
      exec(@sql)   
      end 

    以前进行的程序安装创建了挂起的文件操作。运行安装程序之前,必须重新启动计算机

      这个问题我遇到了两次,一次是在安装SQL server 2000时,另一次是在安装SQL2000-KB884525-SP4-x86-CHS.EXE的时候,虽然情况不同,但解决方法是一样的,就是重新启动计算机都是没用的,可以用下面的方法解决:regedit打开注册表,在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager中找到PendingFileRenameOperations文件,并删除它。

    与SQL server 2000的1433相关知识

      一开始我搞了好久没连接成功,无意间发现我电脑服务上没有运行SQL server 2000的1433的服务端口,以此学习有些相关的知识

    1. win7下出现telnet不是内部或外部的命令
      开始-->控制面版-->打开或关闭windows功能,勾选Telnet客户端,确定
    2. SQL server 的客户端网络实用工具或者服务端网络实用工具,选择TCP/IP后单击属性,可以看到SQL server的端口
    3. dos里面使用telnet localhost 1433可以连接电脑的1433端口
    4. 在任务管理器的服务里可以看到运行软件的PID,可以以此PID在dos窗口里面使用netstat -ano来查看所对应的端口号如下图



    5. 如果此时找不到1433的端口,可以试着下载个SQL2000-KB884525-SP4-x86-CHS.EXE更新试试看,双击打开只能算是解压,不算是安装,真正的安装是到你解压的目录后进入x86setupsetupsql.exe进行安装,在此步骤遇到的问题上面文中也有解决了一些


    注意项

    1. 在Spring配置这句<prop key="hibernate.hbm2ddl.auto">update</prop>时,会自动生成表,但不会自动生成数据库,在没有相应的数据库时运行会出错
    2. sql server不能创建表名为user,会报org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [snack.bean.user]; bad SQL grammar [insert into user (userName, userPwd, userTel, jsId) values (?, ?, ?, ?)]; nested exception is java.sql.SQLException: 在关键字 'user' 附近有语法错误。
    3. dos命令net start MSSQLSERVER启动MSSQLSERVER服务,net stop MSSQLSERVER关闭MSSQLSERVER服务
  • 相关阅读:
    Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录
    bypass disable_function的方法及蚁剑插件bypass-php-function使用
    cisco-GNS3-pix防火墙基本配置实操(持续更新)
    "锁定文件失败 打不开磁盘或它所依赖的某个快照磁盘。模块启动失败。未能启动虚拟机"--解决方法
    python实现图片转字符画
    GNS3--cisco路由器NAT配置
    python虚拟环境----virtualenv
    防火墙----思科路由器基本配置1
    XXE漏洞学习1
    vc程序设计-----位图
  • 原文地址:https://www.cnblogs.com/cnJun/p/3422022.html
Copyright © 2011-2022 走看看