我正在尝试使用 Liquibase 和 Microsoft JDBC Driver 4.1 连接到 Microsoft SQL Server 2008 SP3。我得到了各种异常,而不是通过命令行向服务器进行身份验证的单一成功方法。使用相同的用户名和密码,我可以通过 MS SQL 客户端登录到数据库。因此,该用户的登录问题不是问题。我相信问题出在 JDBC 驱动程序上。
版本:
1) SQL Server 2008 - SP3
2) Liquibase v3.3.2
3) JDBC 驱动程序-“Microsoft JDBC Driver 4.1 for SQL Server”-http ://www.microsoft.com/en-us/download/details.aspx?id=11774
4) JDK 版本 - 1.7.0_71" [Java(TM) SE Runtime Environment (build 1.7.0_71-b14), Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)]
我检查过的内容:
1)允许TCP/IP,标记为“YES”,端口1433
2) 安装 MS SQL 2008 SP3 以解决“2976923 2994310 FIX:使用 SQL Server 2008 R2 或 SQL Server 2008 时 Oracle 订阅的分发代理失败” - http://support.microsoft.com/kb/2653857
3) 为用户启用 SQL Server 身份验证和 Windows 身份验证
错误和命令行输入:
1 “com.microsoft.sqlserver.jdbc.sqlserverexception 用户登录失败”
命令行输入 -
一种。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url="jdbc:sqlserver://DBServer" --username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
湾。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url="jdbc:sqlserver://DBServer;databaseName=DBName;" --username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
C。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url="jdbc:sqlserver://DBServer;databaseName=DBName;" ; --username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
2 - 运行 Liquibase 时出现意外错误:com.microsoft.sqlserver.jdbc.SQLServerException:端口号 1433\DBName 无效。
命令行输入 -
一种。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=sC:\MicrosoftJDBC\sqljdbc_4.1\enu\qljdbc4.jar --url="jdbc:sqlserver://DBServer:1433/DBName" - -username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
湾。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url="jdbc:sqlserver://DBServer:1433\DBName" - -username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
c.liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url="jdbc:sqlserver://DBServer\DBName" - -username=abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
3 运行 Liquibase 时出现意外错误:com.microsoft.sqlserver.jdbc.SQLServerException:与主机 DBServer/DBName、端口 1433 的 TCP/IP 连接失败。错误:“null。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止。”。
命令行输入 -
一种。liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\MicrosoftJDBC\sqljdbc_4.1\enu\sqljdbc4.jar --url=jdbc:sqlserver://DBServer/DBName" --username= abcd --password=abcd123 --changeLogFile=db-changelog.xml 更新
我需要通过 liquibase 命令行参数而不是通过 Java 或 Maven 进行解析。我能够通过 Java 和 Maven 成功地对同一用户进行身份验证,但这并不能解决我自动化部署的目的。请帮助解决此问题。谢谢!