一、下载并安装SQL Server2019

主要参考了博文:SQLServer2019安装(Windows)

二、下载JDBC依赖包

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>10.2.0.jre8</version>
</dependency>
  • 注意version,如果是JAVA8版本的话,要用jre8后缀的jar包。

sql server服务器名称清除 sql server2019服务器名称_sql

三、创建数据库和表

这里主要是介绍如何使用SQL Server Management Studio进行创建。

  1. 在左边数据库上右键新建数据库即可创建新数据库。
  2. 在新建的数据库下的上右键新建表即可进入创建表的窗口。

sql server服务器名称清除 sql server2019服务器名称_sql_02

  1. 填完要在表上创建的列之后,直接保存当前窗口即可创建新表。
  2. 如果修改了创建表的窗口中的值,直接保存即可修改已经创建了的表。但如果某些改动需要删除原表重新创建(如修改了某些列的数据类型),将不被允许修改。
  • 点击工具->选项,在设计器中取消勾选阻止保存要求重新创建表的更改即可。
  • 但要特别注意,如果是表已经有大量的数据了,重新创建表是相当危险的操作,因为数据将全部丢失。

sql server服务器名称清除 sql server2019服务器名称_sql_03

四、用JDBC测试连接数据库

一个测试能否正确连接数据库的代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;

public class DB_Test {
    private static Connection dbConn = null;

    public static void main(String[] args) {
        String dbURL = "jdbc:sqlserver://localhost:1433;"
                + "DatabaseName=Test;";  // Test为数据库名称
        try {
            //1.加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("加载驱动成功!");
            //2.连接
            dbConn = DriverManager.getConnection(dbURL, "sa", "123456");  // sa管理员身份
            System.out.println("连接数据库成功!");
            String sql="select * from Test";  // 执行的语句,Test为数据库表
            PreparedStatement statement=null;
            statement=dbConn.prepareStatement(sql);
            ResultSet res=null;
            res=statement.executeQuery();
            while(res.next()){
                String title=res.getString("id");  // 或者属性列对应值
                System.out.println(title);
            }
        }catch(Exception e) {
            e.printStackTrace();
            System.out.println("连接数据库失败!");
        }

    }
}

五、一些错误

错误1:com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。

// 适用于 SQL Server 的 Microsoft JDBC 驱动程序不会验证 SQL Server TLS 证书
String dbURL = "jdbc:sqlserver://localhost:1433;"
                + "DatabaseName=Test;"
                + "encrypt=true;trustServerCertificate=true";

错误2:对象名 ‘XXX’ 无效。

  • 场景:在SS脚本执行的时候数据库表XXX报错,提示找不到这个表。
  • 原因:没有切换到对应要操作的数据库下。
  • 解决方法:在左上角可用数据库选择框中切换到对应的数据库即可。

sql server服务器名称清除 sql server2019服务器名称_sqlserver_04

错误3:脚本执行长时间没有响应

  • 情景:执行脚本的时候长时间没有响应,而且通过代码(如JDBC)访问也不能响应。
  • 原因:数据库发生死锁。我这边是因为通过代码访问的时候开了多线程导致了数据库死锁。
  • 解决方法:在Sql Server Configuration Manager中重启数据库服务即可。

错误4:无法获得数据库 ‘model’ 上的排他锁。请稍后重试该操作。CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。 (Microsoft SQL Server,错误: 1807)

  • 情景:创建数据库的时候出现的,无法创建成功。
  • 原因:可能是在数据库管理上出现了死锁,导致无法执行操作。
declare   @sql   varchar(240)     
      
  while   1=1     
  begin     
      
  select   top   1   @sql   =   'kill   '+cast(spid   as   varchar(20))     
  from     master..sysprocesses         
  where   spid   >   50   and   spid   <>   @@spid       
      
  if   @@rowcount   =   0     
      break     
      
  exec(@sql)     
  end