-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.nask.pl!news.nask.org.pl!news.interia.pl!not-for-mail
From: Adam <a...@p...onet.pl>
Newsgroups: pl.comp.os.ms-windows.winnt,pl.comp.pecet
Subject: Re: Serwer dla MS-SQL (crosspost)
Date: Thu, 24 Apr 2014 00:01:47 +0200
Organization: INTERIA.PL S.A.
Lines: 135
Message-ID: <lj9d8c$bu9$1@usenet.news.interia.pl>
References: <lir1o7$rq5$2@usenet.news.interia.pl>
<53511928$0$2153$65785112@news.neostrada.pl>
<lir8no$anp$1@usenet.news.interia.pl>
<53516316$0$2233$65785112@news.neostrada.pl>
<litnm7$l45$1@usenet.news.interia.pl>
<53527a63$0$2241$65785112@news.neostrada.pl>
<liua3i$s0u$1@usenet.news.interia.pl>
<5352c885$0$2366$65785112@news.neostrada.pl>
<liula7$jvg$1@usenet.news.interia.pl>
<lj6f19$vs$1@usenet.news.interia.pl>
<5357a2ed$0$2224$65785112@news.neostrada.pl>
NNTP-Posting-Host: ent22.internetdsl.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: usenet.news.interia.pl 1398290509 12233 83.15.205.22 (23 Apr 2014 22:01:49
GMT)
X-Complaints-To: u...@f...interia.pl
NNTP-Posting-Date: Wed, 23 Apr 2014 22:01:49 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:24.0) Gecko/20100101 Thunderbird/24.4.0
In-Reply-To: <5357a2ed$0$2224$65785112@news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.comp.os.ms-windows.winnt:252648
pl.comp.pecet:1235331
[ ukryj nagłówki ]W dniu 2014-04-23 13:24, wloochacz pisze:
> W dniu 2014-04-22 21:13, Adam pisze:
>> W dniu 2014-04-19 22:11, Adam pisze:
>>> W dniu 2014-04-19 21:03, wloochacz pisze:
>>>> W dniu 2014-04-19 19:00, Adam pisze:
>>>> (...)
>>>> W dobrze zaprojektowanej i wdrożonej aplikacji (i bazie danych
>>>> oczywiście) nie ma prawa zdarzyć się coś takiego jak "popsuta baza".
>>>> Nie wiem, może za mało widziałem, ale... Zajmuję się MSSQLem od wersji
>>>> 2000 na poważnie i nigdy nie miałem przypadku popsutej bazy danych, na
>>>> poziomie serwera.
>>>> Braki w danych, osercone dokumenty, zagubione transkacje - pewnie, że
>>>> było. Ale to był efekt źle zaprojektowanej apliakcji. Tylko i
>>>> wyłącznie.
>>>
>>> Nie wiem, czy dobrze się wyraziłem.
>>>
>>> Przykład:
>>> Klient się "walnął" i z jakichś powodów trzeba fakturę wycować "do
>>> bufora" ("Bufor" oznacza, że dokument jest zapisany, ale nie
>>> zatwierdzony "na stałe", można go dowolnie zmieniać lub usunąć).
>>>
>>> Przy wycofaniu do bufora trzeba pamiętać, aby wycofać dokumenty
>>> magazynowe (czyli WZ), wycofać płatności (czyli KP), wrócić ewentualne
>>> rezerwacje i jeszcze wiele innych rzeczy.
>>> Wydaje mi się, że gdyby nie było triggerów, to serwisant mógłby
>>> przykładowo wycofać WZ, przywrócić rezerwacje, ale zapomniałby o
>>> wycofaniu płatności.
> A pewnie - mógłby.
> Gmeranie po bazie danych zawsze może skończyć się czymś podobnym.
>
>>> Tym zajmują się triggery.
>>> Czy dobrze myślę?
> Dobrze, ale z zastrzeżeniem - tym mogą zajmować się triggery.
> Tak samo jak da się to zrobić za pomoca procedury wywoływanej na żądanie
> - np. przez aplikację serwisową.
> Kiedyś dwano tem, jak zajmowałem się wdrożeniami ERPów, miałem cały
> toolbox do takich zabaw ;-)
>
Ja patrzę z poziomu CDN-Optimy.
Tam w zasadzie oprócz SQL Management Studio, albo prostego skanera nic
więcej nie potrzeba.
Oczywiście jest też garść procedur, ale czasem szybciej jest zrobić coś
"z palca". No, chyba że wypuszczam "młodego" pracownika, to wolę, aby
używał gotowych skryptów.
>>>
>>> (...)
>>>
>>
>> Przypomniało mi się jeszcze jedno ważne zadanie dla triggerów: dodatkowe
>> warunki.
>>
>> W systemie CDN-Optima nie ma możliwości zdefiniowania "wymagalności" pól.
>> Przykładowo, formatka kontrahenta. Chcemy wymusić wprowadzenie wartości
>> do pola "telefon" - najprościej zrobić trigger, który będzie darł pysk,
>> jeśli chcemy zapisać kartę kontrahenta z pustym polem "telefon".
>> Oczywiście to dość prosty, wręcz trywialny przykład.
>> Nie bardzo wiem, jak inaczej można by to zrobić.
> Ale, moim zdaniem, to jest krzywe... walidacją tego typu powinna
> zajmować się aplikacja.
Optima ma zdefiniowane jako "wymagalne" tylko najważniejsze pola, reszta
jest opcjonalna. Nie ma flag "wymagalności"
Jak pisałem, jest to trywialny przykład.
Ale można zrobić przykładowo trigger, który będzie sprawdzał historię
płatności, historię dokumentów spłacanych po terminie i np. proponował
(lub przeliczał) nową tabelę rabatową.
> Powinna oferować użytkownikowi stosowne możliwości do definicji takich
> walidatorów - włącznie z walidacją opartą na wyrażeniach/skryptach.
> A jeśli tego nie robi - no cóż...
W Optimie skrypty można podpiąć jako funkcję dodatkową, wołaną na
żadanie przez operatora, lub jako filtr do widoku tabel, który to filtr
może być wymagalny dla użytkownika. Przykład: tabela pracowników w
kadrach, gdzie poszczególne "panienki" mogą mieć dostęp tylko do
pracowników swojego wydziału, zaś "naczelna matrona" widzi wszystkich.
>
>> Zaleta: triggery "przeżywają" konwersję bazy danych do nowszej wersji, a
>> Optima jest aktualizowana kilkukrotnie w ciągu roku.
> Raczej odwrotnie ;-)
> Zauważ, że MSSQL jest taki "gupi", że nie sprawdza triggerów/procedur
> pod kątem zgodności ze schematem bazy danych.
> Innymi słowy - stwórz trigger, który robi cokolwiek i odwłuje się do
> jakiegoś pola w tabeli.
> Potem usuń to pole (zmień nazwę, cokolwiek) - teraz masz trigger, który
> pieknie się wysypie w momencie jego użycia - ale nie wcześniej.
Zgadza się.
Ale w Optimie przy konwersji danych do nowszej wersji są dodawane nowe
pola (i klucze, i indeksy, i widoki), natomiast nigdy (chyba) nie są
usuwane istniejące, nawet jeśli już są niepotrzebne.
Przykład:
w "starych" wersjach Optimy na kartotece towaru była jednostka miary
główna i dodatkowa (np. sztuka i karton) oraz pole EAN.
Aktualnie (od kilku wersji) jest dowolna liczba jednostek miary
przypisanych do jednej kartoteki towarowej (np. 1 szt, 12 szt= karton,
192 szt = skrzynka, 13824 szt=paleta) oraz do każdej z tych jednostek
można "dokleić" dowolną liczbę kodów EAN.
Stąd m.in. pole "jm. dodatkowe" już nie jest potrzebne, ale zostaje.
Tyle, że trzeba własne procedury, wydruki czy triggery pozmieniać.
Kwestia dyskusyjna, czy lepiej, gdy trigger/procedura/wydruk od razu się
wyłoży, bo zniknęło pole, czy po miesiącu klient zacznie wrzeszczeć, że
coś mu się źle liczy, bo procedura leci po pustych polach.
>
> Poza tym, oglądam dokumentację CDN - faktycznie, tam ejst cala masa
> triggerów, które wołają się nawzajem.
> Trafiłem na taki zapis:
> if @@NESTLEVEL>4 return
>
> Uuuaaa... nie będę się wypowiadał, bo za mało wiem - ale to wygląda
> podejrzanie.
>
W którym miejscu? Pamiętasz? Możesz podać?
Ja już kilka razy widziałem IF 1=1 AND - też nie wiem, po co. Nie
pamiętam, gdzie to było, ale jak znajdę, to spytam.
Poza tym Ty teraz oglądasz chyba CDN-XL, natomiast Optima jest dużo
prostsza.
--
Pozdrawiam.
Adam
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Pendrive, ale dysk
- Dyski HDD SATA 2,5'' >2TB
- Funbox 10 - Czy miał już ktoś styczność z tym sagemowym sprzętem?
- Konwersja dysku z MBR na GPT
- Przenosiny systemu
- soft dla detekcji stanu DMA (on,czy off)
- jak w chrome (forku chrome) wyznaczyc katalog profilu w dowolnym miejscu?
- Dziwnie padający Seagate
- Kwestia UPSa i elektryki tegoż
- Drukowanie bezprzewodowe - jaki interface ?
- Libre Office Krok Po Kroku - Komentarz
- Dysk startowy z dosem - ktokolwiek widział, ktokolwiek zna?
- Sprzedawanie zaszyfrowanych filmów na płytach Blu-Ray bez kluczy deszyfrujących
- Re: Drugi ekran na Androidzie
- Vmware update
Najnowsze wątki
- 2024-12-14 światła znów wlączyli
- 2024-12-14 nie lekceważ termostatu
- 2024-12-14 numer 112
- 2024-12-14 Pendrive, ale dysk
- 2024-12-12 Autocom CAN CDP+ wysokie kody błędów
- 2024-12-13 termostat do lodowki
- 2024-12-13 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-13 Warszawa => Head of International Freight Forwarding Department <=
- 2024-12-13 Poznań => Employer Branding Specialist <=
- 2024-12-13 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-13 Kraków => Business Development Manager - Network and Network Security
- 2024-12-13 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-13 Gdańsk => Programista Full Stack .Net <=
- 2024-12-13 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-12-13 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A