ďťż
 
sql server 2000 - problem z logiem ďťż
 
sql server 2000 - problem z logiem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

sql server 2000 - problem z logiem



ultra79 - 27-09-2007 00:09
sql server 2000 - problem z logiem
  Pls o pomoc w nastepujacej sprawie. Mam dosc duza tabele (+-100 mln. wierszy),
kilka kolumn w niej ma typ char. Chcialbym je zamienic na varchar. Robiac
update za pomoca Enterprise Managera (Design table) zapycha mi sie log-rosnie
to takich rozmiarow. Wg. mnie nie bedzie mozliwe przeprowadzenie takiego updatu
przy ladowaniu danych do loga. Czy jest jakas mozliwosc aby czasowo wylaczyc
zapis do loga, lub przeprowadzic ten update w inny sposob? Bede wdzieczny za
pomoc. Pozdrawiam.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





Wojtek - 27-09-2007 00:09

  ultra79 pisze:
> Pls o pomoc w nastepujacej sprawie. Mam dosc duza tabele (+-100 mln. wierszy),
> kilka kolumn w niej ma typ char. Chcialbym je zamienic na varchar. Robiac
> update za pomoca Enterprise Managera (Design table) zapycha mi sie log-rosnie
> to takich rozmiarow. Wg. mnie nie bedzie mozliwe przeprowadzenie takiego updatu
> przy ladowaniu danych do loga. Czy jest jakas mozliwosc aby czasowo wylaczyc
> zapis do loga, lub przeprowadzic ten update w inny sposob? Bede wdzieczny za
> pomoc. Pozdrawiam.
>

Możesz np dodać nową kolumnę typu varchar, skopiować do niej wszystkie dane, potem usunąć kolumnę char
i zmienić nazwę kolumny varchar.

Wojtek




Marcin A. Guzowski - 28-09-2007 00:11

  ultra79 wrote:
> Pls o pomoc w nastepujacej sprawie. Mam dosc duza tabele (+-100 mln. wierszy),
> kilka kolumn w niej ma typ char. Chcialbym je zamienic na varchar. Robiac
> update za pomoca Enterprise Managera (Design table) zapycha mi sie log-rosnie
> to takich rozmiarow. Wg. mnie nie bedzie mozliwe przeprowadzenie takiego updatu
> przy ladowaniu danych do loga. Czy jest jakas mozliwosc aby czasowo wylaczyc
> zapis do loga, lub przeprowadzic ten update w inny sposob? Bede wdzieczny za
> pomoc. Pozdrawiam.

Nie licz na to, że jakąkolwiek operację DML lub DDL przeprowadzisz z
pominięciem loga transakcyjnego w poważnym RDBMS.

Aplikacje typu EM tak najczęściej w takiej sytuacji robią bardzo prostą
rzecz - kopiują cały obiekt do nowego (zmienionego), kasują stary, a
następnie dokonują zmiany nazwy obiektu. Możesz wygenerować sobie skrypt
zmiany (z Design table), gdzie to wszystko ładnie widać. Całość działań
jest z oczywistych powodów objęta jedną transakcją - nie ma się więc co
dziwić, że log puchnie.

Proponowałbym Ci rozwiązanie polegające na tym samym, co zasugerował
Wojtek w poście wyżej.

Po pierwsze - przestań używać EM, a zacznij - Query Analyzera (zakładam,
że jesteś na SQL2000). Najpierw dodaj kolumnę dopuszczająca wartość NULL:

ALTER TABLE table ADD temp_varchar_column varchar(1000) NULL

Powyższe polecenie wywoła tylko zmianę metainformacyjną - strony danych,
na których alokowana jest tabela nie zostaną ruszone (i o to chodzi).

Teraz za pomocą operacji UPDATE aktualizuj odpowiednimi porcjami
wartości dodanej kolumny na zasadzie:

UPDATE tabela SET temp_varchar_column = old_char_column WHERE ...
(zawęź jakoś po kluczu lub użyj SET ROWCOUNT)

Chodzi o to, aby aktualizować np. tylko po 100000 rekordów w jednej
transakcji zmniejszając tym samym jej rozmiar, bo to właśnie rozmiar
transakcji rozpycha Ci loga.

Na koniec usuń starą kolumnę (ALTER TABLE tabelka DROP COLUMN
old_char_column) i wykonaj zmianę nazwy kolumny za pomocą procedury
sp_rename (obydwie operacje to wyłącznie zmiany metainformacyjne).

Teraz możesz już dostosować nową kolumnę do swoich potrzeb (dać NOT
NULLa, DEFAULTa itd.).

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ponland.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com