使用实例名(JDBC)动态发布到Tridion Broker数据库时出现连接问题?
提交阶段始终失败,并出现以下错误:使用实例名(JDBC)动态发布到Tridion Broker数据库时出现连接问题?,tridion,tridion-2011,tridion-content-delivery,Tridion,Tridion 2011,Tridion Content Delivery,提交阶段始终失败,并出现以下错误: 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.JDBCConne
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)的数据库中工作的配置:
但是,对于我们的产品,使用命名实例是不可避免的。因此,我们尝试通过此配置传递实例的名称,但没有效果;我们仍然得到了错误
连接字符串有什么问题吗?或者是否有方法使用第一个模式传递实例名称;例如说
?您可以尝试以下方法:
您指定URL的原始语法是正确的,但是,在检查后,我似乎找不到名为“域”的有效属性。这可能是你的罪魁祸首。尝试使用“\”在用户名中指定域。根据本msdn文章:
您应该这样配置它:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
您应该同时使用服务器名和实例名
<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\\THE_INSTANCE_NAME" />
<Property Name="portNumber" Value="1433" />
<Property Name="databaseName" Value="Tridion_Broker" />
<Property Name="user" Value="TridionBrokerUser" />
<Property Name="password" Value="xxxxxxxxpassxx" />
</DataSource>
</Storage>
另一方面,我对这个旧表示的URL做了一点修改
<Storage Type="persistence" Class="com.tridion.storage.persistence.JPADAOFactory" Id="brokerdb" Url="jdbc:sqlserver://ourServerName;instanceName=THE_INSTANCE_NAME;databaseName=Tridion_Broker;integratedSecurity=true;" Username="TridionBrokerUser" Password="xxxxxxxxpassxx" Driver="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
<Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120"/>
</Storage>
请为上述旧表示形式尝试以下URL:-
jdbc:sqlserver://ourServerName\\_实例_名称;databaseName=Tridion_Broker;integratedSecurity=true代码>
jdbc:sqlserver://ourServerName\_实例_名称;databaseName=Tridion_Broker;integratedSecurity=true代码>
jdbc:sqlserver://ourServerName;instanceName=实例名称;databaseName=Tridion_Broker;integratedSecurity=true;代码>
jdbc:sqlserver://ourServerName/Tridion_Broker;instanceName=实例名称;域名=域名代码>
我还尝试了连接字符串方法,它也起了作用:
另外,您似乎缺少存储元素上的方言=“MSSQL”属性。您是对的,在我们的情况下不需要域。它是解决方案的一部分。谢谢。
不起作用。这与Puntero的答案相同。至于“连接字符串”方法,#2在没有integratedSecurity
参数的情况下工作。如果以下任何回答回答了您的问题,您能否接受这一回答,以便对其他社区成员有所帮助。