0

Liquibase と Microsoft JDBC Driver 4.1 を使用して Microsoft SQL Server 2008 SP3 に接続しようとしています。さまざまな例外が発生し、コマンドライン経由でサーバーへの認証を成功させる方法が 1 つもありません。同じユーザー名とパスワードを使用して、MS SQL クライアント経由でデータベースにログインできました。したがって、このユーザーのログインの問題は問題ではありません。問題は JDBC ドライバーにあると思います。

バージョン:

1) SQL Server 2008 - SP3

2) リキベース 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 が許可され、「YES」とマークされ、ポート 1433

2) 「2976923 2994310 FIX: SQL Server 2008 R2 または SQL Server 2008 を使用すると Oracle サブスクリプションのディストリビューション エージェントが失敗する」を解決するためにインストールされた MS SQL 2008 SP3 - 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 更新

b. 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

b. 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 更新

Java や Maven ではなく、liquibase コマンドライン引数による解決が必要です。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 に答える