Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions obevo-db-impls/obevo-db-sybase-ase/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,16 @@
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<!--
<dependency>
<groupId>com.sybase.jdbcx</groupId>
<artifactId>jconn3</artifactId>
</dependency>
<dependency>
&lt;!&ndash; Setting optional for now as this is a rarer requirement. It will be included in the distribution package and maven plugin, though &ndash;&gt;
<groupId>com.sybase.jdbcx</groupId>
<artifactId>jconn4</artifactId>
<optional>true</optional>
</dependency>
-->
<!-- Migrated from Sybase to Azure SQL according to checklist item 1: Update library dependencies. -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
<!-- Migrated from Sybase to Azure SQL according to checklist item 4: Enable passwordless connection. -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>

<dependency>
<groupId>com.goldmansachs.obevo</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,10 @@ public Class<? extends DeployerAppContext> initializeAppContextBuilderClass() {
return SybaseAseAppContext.class;
}

// Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
@Override
protected String initializeDefaultDriverClassName() {
return "com.sybase.jdbc3.jdbc.SybDriver";
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,21 @@
import org.apache.commons.lang3.Validate;

public class AseJdbcDataSourceFactory extends JdbcDataSourceFactory {
// Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
@Override
protected String createUrl(DbEnvironment env) {
return createAseUrl(
return createSqlServerUrl(
Validate.notNull(env.getDbHost(), "dbHost property must be specified for this DB environment: " + env),
env.getDbPort()
env.getDbPort(),
env.getDbSchemaPrefix() // Using schema prefix as database name
);
}

private static String createAseUrl(String host, int port) {
return String.format("jdbc:sybase:Tds:%1$s:%2$s", host, port);
// Migrated from Sybase to Azure SQL - SQL Server URL format
private static String createSqlServerUrl(String host, int port, String databaseName) {
// Default to port 1433 if not specified
int sqlServerPort = (port > 0) ? port : 1433;
String dbName = (databaseName != null && !databaseName.isEmpty()) ? databaseName : "master";
return String.format("jdbc:sqlserver://%1$s:%2$d;databaseName=%3$s", host, sqlServerPort, dbName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,31 @@
# specific language governing permissions and limitations
# under the License.
#
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations and item 4: Enable passwordless connection.
environments:
environment:
- name: v13
type: SYBASE_ASE
type: MSSQL
metaschema: metaschema
sourcePath: platforms/sybasease/step${stepNumber}
schemas:
schema:
- name: dbdeploy01
- name: metaschema
driverClass: com.sybase.jdbc4.jdbc.SybDriver
driverClass: com.microsoft.sqlserver.jdbc.SQLServerDriver
cleanBuildAllowed: true
jdbcUrl: jdbc:sybase:Tds:192.168.1.177:5000
defaultUserId: sa
defaultPassword: deploy123
# Migrated from Sybase to Azure SQL - using Azure AD Managed Identity authentication
# Other Supported authentication modes:
# - ActiveDirectoryDefault: Uses DefaultAzureCredential chain (Environment, Managed Identity, Azure CLI, etc.)
# - ActiveDirectoryServicePrincipal: Uses application service principal with client ID and secret
# - ActiveDirectoryPassword: Uses Microsoft Entra username and password
# - ActiveDirectoryIntegrated: Uses integrated Windows authentication (requires domain-joined machine)
# - ActiveDirectoryInteractive: Interactive browser-based authentication with MFA support
jdbcUrl: jdbc:sqlserver://your-server.database.windows.net:1433;databaseName=dbdeploy01;authentication=ActiveDirectoryManagedIdentity
# If you want to use user-assigned managed identity, add the msiClientId parameter:
# jdbcUrl: jdbc:sqlserver://your-server.database.windows.net:1433;databaseName=dbdeploy01;authentication=ActiveDirectoryManagedIdentity;msiClientId=<client-id>
- name: v13_schema
type: SYBASE_ASE
type: MSSQL
metaschema: metaschema.subschema
sourcePath: platforms/sybasease/step${stepNumber}
schemas:
Expand All @@ -42,8 +50,6 @@ environments:
overrideValue: dbdeploy01.subschema1
- schema: metaschema
overrideValue: metaschema.subschema
driverClass: com.sybase.jdbc4.jdbc.SybDriver
driverClass: com.microsoft.sqlserver.jdbc.SQLServerDriver
cleanBuildAllowed: true
jdbcUrl: jdbc:sybase:Tds:192.168.1.177:5000
defaultUserId: sa
defaultPassword: deploy123
jdbcUrl: jdbc:sqlserver://your-server.database.windows.net:1433;databaseName=dbdeploy01;authentication=ActiveDirectoryManagedIdentity
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
under the License.

-->
<dbSystemConfig type="SYBASE_ASE" sourceDirs="platforms/sybasease/step1">
<!-- Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations. -->
<dbSystemConfig type="MSSQL" sourceDirs="platforms/sybasease/step1">
<schemas>
<schema name="dbdeploy01" />
</schemas>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
under the License.

-->
<dbSystemConfig type="SYBASE_ASE" sourceDirs="platforms/sybasease/step2">
<!-- Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations. -->
<dbSystemConfig type="MSSQL" sourceDirs="platforms/sybasease/step2">
<schemas>
<schema name="dbdeploy01" />
</schemas>
Expand Down
19 changes: 10 additions & 9 deletions obevo-db-impls/obevo-db-sybase-iq/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,16 @@
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<!--
<dependency>
<groupId>com.sybase.jdbcx</groupId>
<artifactId>jconn3</artifactId>
</dependency>
-->

<!-- for sybase IQ load, do not include jodbc dependency via POM, as it explicitly requires the classpath entry
from your local drive and the path value to be set-->
<!-- Migrated from Sybase to Azure SQL according to checklist item 1: Update library dependencies. -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
<!-- Migrated from Sybase to Azure SQL according to checklist item 4: Enable passwordless connection. -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>

<dependency>
<groupId>com.goldmansachs.obevo</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ public Class<? extends DeployerAppContext> initializeAppContextBuilderClass() {
return SybaseIqAppContext.class;
}

// Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
@Override
protected String initializeDefaultDriverClassName() {
return "com.sybase.jdbc3.jdbc.SybDriver";
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,18 @@
* See here for the driver history - http://scn.sap.com/community/sql-anywhere/blog/2014/05/02/connecting-to-sql-anywhere-using-jdbc
*/
public class IqJconnDataSourceFactory extends AbstractIqDataSourceFactory {
// Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
@Override
public boolean isDriverAccepted(Class<? extends Driver> driverClass) {
return driverClass.getName().startsWith("com.sybase.jdbc");
return driverClass.getName().startsWith("com.microsoft.sqlserver.jdbc");
}

// Migrated from Sybase to Azure SQL - SQL Server URL format
@Override
protected Pair<String, String> getUrl(DbEnvironment env, String schema, Credential credential) {
String url = String.format("jdbc:sybase:Tds:%1$s:%2$s", env.getDbHost(), env.getDbPort());
int port = (env.getDbPort() > 0) ? env.getDbPort() : 1433;
String databaseName = (schema != null && !schema.isEmpty()) ? schema : "master";
String url = String.format("jdbc:sqlserver://%1$s:%2$d;databaseName=%3$s", env.getDbHost(), port, databaseName);
return Tuples.pair(url, null);
}

Expand Down
20 changes: 12 additions & 8 deletions obevo-db/src/test/resources/dbComparisonConfigExample.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,27 @@
tables.include=TableA,TableB,TableC,TableD
tables.exclude=ExcludeTable1,ExcludeTable2
comparisons=dev1,uat;uat,prod1;dev1,prod2
dev1.url=jdbc:sybase:Tds:myhost1.me.com:1234
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
dev1.url=jdbc:sqlserver://myhost1.me.com:1433;databaseName=schemaA
dev1.schema=schemaA
dev1.username=myuser1
dev1.password=mypass1
dev1.driverClass=com.sybase.jdbc3.jdbc.SybDriver
uat.url=jdbc:sybase:Tds:myhost2.me.com:1234
dev1.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
uat.url=jdbc:sqlserver://myhost2.me.com:1433;databaseName=schemaB
uat.schema=schemaB
uat.username=myuser2
uat.password=mypass2
uat.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod1.url=jdbc:sybase:Tds:myhost3.me.com:1234
uat.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
prod1.url=jdbc:sqlserver://myhost3.me.com:1433;databaseName=schemaC
prod1.schema=schemaC
prod1.username=myuser3
prod1.password=mypass3
prod1.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod2.url=jdbc:sybase:Tds:myhost4.me.com:1234
prod1.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
prod2.url=jdbc:sqlserver://myhost4.me.com:1433;databaseName=schemaD
prod2.schema=schemaD
prod2.username=myuser4
prod2.password=mypass4
prod2.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod2.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
10 changes: 9 additions & 1 deletion obevo-dependencies/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -367,17 +367,25 @@
<version>2.5.4</version>
<optional>true</optional> <!-- LGPL is not compatible with Apache, and so let's ensure this dependency is optional (i.e. not included by default) -->
</dependency>
<!-- Migrated from Sybase to Azure SQL according to checklist item 1: Update library dependencies. -->
<!-- Note: CVE-2025-59250 exists in all current versions, waiting for patched release -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre7</version>
<version>12.10.2.jre8</version>
<exclusions>
<exclusion>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-keyvault</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Migrated from Sybase to Azure SQL according to checklist item 4: Enable passwordless connection. -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.3</version>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,27 @@
tables.include=TableA,TableB,TableC,TableD
tables.exclude=ExcludeTable1,ExcludeTable2
comparisons=dev1,uat;uat,prod1;dev1,prod2
dev1.url=jdbc:sybase:Tds:myhost1.me.com:1234
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
dev1.url=jdbc:sqlserver://myhost1.me.com:1433;databaseName=schemaA
dev1.schema=schemaA
dev1.username=myuser1
dev1.password=mypass1
dev1.driverClass=com.sybase.jdbc3.jdbc.SybDriver
uat.url=jdbc:sybase:Tds:myhost2.me.com:1234
dev1.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
uat.url=jdbc:sqlserver://myhost2.me.com:1433;databaseName=schemaB
uat.schema=schemaB
uat.username=myuser2
uat.password=mypass2
uat.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod1.url=jdbc:sybase:Tds:myhost3.me.com:1234
uat.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
prod1.url=jdbc:sqlserver://myhost3.me.com:1433;databaseName=schemaC
prod1.schema=schemaC
prod1.username=myuser3
prod1.password=mypass3
prod1.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod2.url=jdbc:sybase:Tds:myhost4.me.com:1234
prod1.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Migrated from Sybase to Azure SQL according to checklist item 2: Update database configurations.
prod2.url=jdbc:sqlserver://myhost4.me.com:1433;databaseName=schemaD
prod2.schema=schemaD
prod2.username=myuser4
prod2.password=mypass4
prod2.driverClass=com.sybase.jdbc3.jdbc.SybDriver
prod2.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver