SQL Server için Liquibase'i kullanmaya çalışıyoruz ve Contexts and Labels ile ilgili bir sorunuz var. Dev, TST ve Prod ortamlarımıza dağıtım yaparken, spesifik olarak spesifik olan sql sunucu eşanlamlılarını ve bağlantılı sunucuları kullanırız. Örneğin, TST'ye dağıtıldığında Bağlantılı Sunucu ve Eşanlamlı SERVER_A'ya işaret edecek, ancak Prod SERVER_B'ye işaret etmelidir. Liquibase'in yayın süresinde hangi yere dağıttığımıza bağlı olarak doğru SERVER değerinde otomatik olarak değişmesi için bir yol var mı?Çevreye özgü SQL Bağlantılı Sunucu ve Eşanlamlılar tanımları
0
A
cevap
0
Bunu desteklemek için kullanılan Liquibase özellikleri labels, contexts ve changelog parameters'dur. Bu örnek değil tamamen doğrudur bu yüzden,
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<property name="linked.server" value="SERVER_A" context="TST"/>
<property name="linked.server" value="SERVER_B" context="Prod"/>
<changeSet id="1" author="Brian">
<sql>CREATE LINKED SERVER STATEMENT SO LINKED SERVER IS ${linked.server}</sql>
</changeSet>
</databaseChangeLog>
Ne istediğini oluşturmak için SQL Server sözdizimi bilmiyorum ama ana şey kullanabilirsiniz olmasıdır: Eğer değişmek böyle bir şey olabilir oradaki değişken referansı ${linked.server}
. SQL Server Eşanlamlı veya Bağlantılı Sunucular için yerleşik bir Liquibase refactoring yok, bu yüzden <sql>
etiketini kullanabilir veya yeni bir <synonym>
ve/veya <linkedServer>
etiketini uygulayan kendi Liquibase uzantınızı yazabilirsiniz.
Eğer argüman
--context=TST
veya
--context=Prod
ve uygun değeri sübstitüe edilmiş olur kaynağı olacaktır liquibase update
çalıştırmak