首页 文章

带有Liquibase的MS SQLServer JDBCcommandline - 登录失败/ TCP IP异常/端口无效

提问于
浏览
0

我正在尝试使用Liquibase和Microsoft JDBC Driver 4.1连接到Microsoft SQL Server 2008 SP3 . 我得到了各种异常,而不是通过命令行对服务器进行身份验证的单一成功方法 . 使用相同的用户名和密码,我可以通过MS SQL Client登录数据库 . 因此,此用户的登录问题不是问题 . 我相信问题出在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运行时环境(版本1.7.0_71-b14),Java HotSpot(TM)64位服务器VM(版本24.71-b01,混合模式)]

我检查了什么:

1)允许TCP / IP,标记为“是”,端口1433

2)安装MS SQL 2008 SP3以解决"2976923 2994310 FIX: Distribution Agent for Oracle subscription fails when you use SQL Server 2008 R2 or SQL Server 2008" - http://support.microsoft.com/kb/2653857

3)为用户启用SQL Serverauthentication和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 update

湾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 update

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 update

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 update

湾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 update

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 update

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 update

我需要通过liquibase命令行参数解决,而不是通过Java或Maven解决 . 我能够通过Java和Maven成功地与同一用户进行身份验证,但它并没有解决我自动化部署的目的 . 请帮助解决此问题 . 谢谢!

1 回答

  • 3

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

相关问题