8

コミット フェーズは常に次のエラーで失敗します。

Committing Deployment Failed
Phase: Deployment Prepare Commit Phase failed, Unable to prepare transaction: tcm:0515104-66560,
org.hibernate.exception.JDBCConnectionException: Cannot open connection,
org.hibernate.exception.JDBCConnectionException: Cannot open connection, Unable to prepare transaction: tcm:0-515104-66560, 
org.hibernate.exception.JDBCConnectionException: Cannot open connection,
org.hibernate.exception.JDBCConnectionException: Cannot open connection

これは、既定のインスタンス (DEV/UAT) を持つデータベースで機能する構成です。

<Storage Type="persistence" Id="brokerdb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
            <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
            <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                <Property Name="serverName" Value="ourServerName" />
                <Property Name="portNumber" Value="1433" />
                <Property Name="databaseName" Value="Tridion_Broker" />
                <Property Name="user" Value="TridionBrokerUser" />
                <Property Name="password" Value="xxxxxxxxpassxx" />
            </DataSource>
        </Storage> 

ただし、私たちのプロダクションでは、名前付きインスタンスの使用は避けられません。そのため、インスタンスの名前を渡すためにこの構成を試みましたが、役に立ちませんでした。まだエラーが発生します。

<Storage Type="persistence" Class="com.tridion.storage.persistence.JPADAOFactory" 
    Id="brokerdb"
    Url="jdbc:sqlserver://ourServerName/Tridion_Broker;instanceName=THE_INSTANCE_NAME;domain=DOMAIN_NAME" 
    Username="TridionBrokerUser" 
    Password="xxxxxxxxpassxx" 
    Driver="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
    <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120"/>
</Storage>

接続文字列に何か問題がありますか? または、最初のパターンを使用してインスタンス名を渡す方法があります。たとえば<Property Name="instanceName" Value="THE_INSTANCE_NAME" />

4

5 に答える 5

6

NikoliとGertjanの両方の参照により、インスタンス名は必須ではないことがわかりました。別の方法は、インスタンスが実行されているポートを指定することです。

この記事では、インスタンスに使用されているポートを知る方法を説明しました。

この構成は機能しました:

<Storage Type="persistence" Id="brokerdb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
        <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
        <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
            <Property Name="serverName" Value="ourServerName" />
            <Property Name="portNumber" Value="43333" />
            <Property Name="databaseName" Value="Tridion_Broker" />
            <Property Name="user" Value="TridionBrokerUser" />
            <Property Name="password" Value="xxxxxxxxpassxx" />
        </DataSource>
    </Storage> 

また、接続文字列アプローチを試しましたが、それも機能しました。

<Storage Type="persistence" Class="com.tridion.storage.persistence.JPADAOFactory" 
    dialect="MSSQL" 
    Id="brokerdb" 
    Url="jdbc:sqlserver://ourServerName:43333;databaseName=Tridion_Broker;" 
    Username="TridionBrokerUser" Password="xxxxxxxxpassxx" 
    Driver="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
    <Pool Type="jdbc2" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120"/>
</Storage>
于 2012-10-09T06:13:58.587 に答える
3

次のことを試すことができます。

<Property Name="serverName" Value="ourServerName\ourInstanceName" />
于 2012-10-08T11:50:42.320 に答える
2

URL を指定する元の構文は正しいですが、ドキュメントを確認すると、「ドメイン」と呼ばれる有効なプロパティが見つからないようです。これはあなたの犯人かもしれません。「\」を使用してユーザー名にドメインを指定してみてください。

于 2012-10-08T12:33:33.190 に答える
2

このmsdnの記事によると: http://msdn.microsoft.com/en-us/library/ms378428.aspx

次のように構成する必要があります。

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
于 2012-10-08T13:55:53.647 に答える
1
于 2012-10-08T21:21:21.287 に答える