public ArgumentyKolumn(MetadaneKolumn metadane, int przesuniecieKolumny, int typKolumny) { int wzglednyKoniecKolumny = wezWzglednyKoniecKolumny(metadane.tablicaWymiarow, przesuniecieKolumny); int dlugoscKolumny = wezDlugoscKolumny(metadane.tablicaWymiarow, przesuniecieKolumny, typKolumny, metadane.poczatekBlokuDanych); zawartoscHeksKolumny = wezZawartoscHeksKolumny(metadane.kontent, wzglednyKoniecKolumny, dlugoscKolumny); }
private static void pobierzWpisyDziennika(object wynikZapytania, out String id, out String kontent, out Int64 idTabeli, out int nKolumn, out String tablicaWymiarow, out int poczatekBlokuDanych, out String tablicaPustychBin) { MetadaneKolumn metadaneKolumny = (MetadaneKolumn)wynikZapytania; id = metadaneKolumny.id; kontent = metadaneKolumny.kontent; idTabeli = metadaneKolumny.idTabeli; nKolumn = metadaneKolumny.nKolumn; tablicaWymiarow = metadaneKolumny.tablicaWymiarow; poczatekBlokuDanych = metadaneKolumny.poczatekBlokuDanych; tablicaPustychBin = metadaneKolumny.tablicaPustychBin; }
private static IEnumerable UsunieteEtap2(String nazwaTabeli) { ArrayList ZbiorMetadanychKolumn = (ArrayList)UsunieteEtap1(nazwaTabeli); ArrayList zbiorWyjsciowy = new ArrayList(); SqlConnection conn = new SqlConnection("context connection=true"); conn.Open(); foreach (MetadaneKolumn MetadaneKolumn in ZbiorMetadanychKolumn) { SqlCommand zap = new SqlCommand( "SELECT " + "ISNULL(NAME, 'USUNIETA'), " + "CAST(s.leaf_null_bit AS INT), " + "CAST(leaf_offset AS INT), " + "CAST(s.system_type_id AS INT), " + "ISNULL(CAST(c.length AS INT), max_length), " + "leaf_offset + 1" + "FROM " + "sys.allocation_units a " + "JOIN sys.partitions p ON(a.type IN(1, 3) " + "AND p.hobt_id = a.container_id) " + "OR(a.type = 2 AND p.partition_id = a.container_id) " + "JOIN sys.system_internals_partition_columns s ON s.partition_id = p.partition_id " + "LEFT OUTER JOIN syscolumns c ON c.id = p.object_id AND c.colid = s.partition_column_id " + "WHERE " + "a.[Allocation_Unit_Id] = " + MetadaneKolumn.idTabeli, conn); SqlDataReader zapReader = zap.ExecuteReader(); while (zapReader.Read()) { String zawartoscHeksKolumny = ""; String columnName = zapReader.GetString(0); int idKolumny = zapReader.GetInt32(1); int przesuniecieKolumny = zapReader.GetInt32(2); int typKolumny = zapReader.GetInt32(3); int dlugosc = zapReader.GetInt32(4); int pozycja = zapReader.GetInt32(5); int columnIsNull = MetadaneKolumn.wezBitTablicyPustychBin(idKolumny); if (columnIsNull == 0 && idKolumny <= MetadaneKolumn.nKolumn) { if (przesuniecieKolumny < 1) { ArgumentyKolumn ArgumentyKolumn = new ArgumentyKolumn(MetadaneKolumn, przesuniecieKolumny, typKolumny); zawartoscHeksKolumny = ArgumentyKolumn.zawartoscHeksKolumny; } else { zawartoscHeksKolumny = String.Concat(((String)MetadaneKolumn.kontent).Skip(pozycja * 2).Take(dlugosc * 2)); } } zbiorWyjsciowy.Add(new DaneKolumn( MetadaneKolumn.id, columnName, typKolumny, zawartoscHeksKolumny )); } zapReader.Close(); } conn.Close(); return(zbiorWyjsciowy); }