0

我正在尝试使用 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 成功地对同一用户进行身份验证,但这并不能解决我自动化部署的目的。请帮助解决此问题。谢谢!

4

1 回答 1

3

问题是因为 liquibase.bat 文件删除了“!” [一个感叹号符号]最后在批处理文件中解析之前将其传递给liquibase.jar文件中的liquibase.integration.commandline.Main方法。我提出了一个问题 liquibase.jira.com/browse/CORE-2250

于 2015-02-24T06:27:59.327 回答