import java.io.FileInputStream; import java.sql.*; import java.util.Properties; public class Verify { public static void main(String[] args) throws Exception { Properties props = new Properties(); try (FileInputStream in = new FileInputStream(args[0])) { props.load(in); } try (Connection conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"))) { // 1. identity columns try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT OBJECT_NAME(ic.object_id) AS tbl, ic.name, ic.is_identity FROM sys.identity_columns ic WHERE ic.name='b_id'")) { System.out.println("== identity columns on b_id =="); if (!rs.next()) System.out.println(" NONE (all s_* tables b_id no longer identity)"); else { do { System.out.println(" " + rs.getString("tbl")); } while (rs.next()); } } // 2. all PKs still exist try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT OBJECT_NAME(kc.parent_object_id) AS tbl, kc.name FROM sys.key_constraints kc WHERE kc.type='PK' AND kc.parent_object_id IN (SELECT object_id FROM sys.tables WHERE name LIKE 's' + char(95) + '%') ORDER BY 1")) { System.out.println("== PKs =="); while (rs.next()) System.out.println(" " + rs.getString("tbl") + " " + rs.getString("name")); } // 3. table count try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.tables")) { rs.next(); System.out.println("total_tables=" + rs.getInt(1)); } // 4. FK count (should still be 0) try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.foreign_keys")) { rs.next(); System.out.println("physical_fk_count=" + rs.getInt(1)); } // 5. b_user unchanged try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT is_identity FROM sys.columns WHERE object_id=OBJECT_ID('b_user') AND name='b_id'")) { rs.next(); System.out.println("b_user.b_id is_identity=" + rs.getBoolean("is_identity")); } // 6. select from b_user to confirm it's still readable try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM b_user")) { rs.next(); System.out.println("b_user row_count=" + rs.getInt(1)); } } } }