korzystanie z sql profiler w bazie danych, która jest produkowana
<p>jako programista dość często korzystam z sql profiler. to dobre narzędzie do debugowania, zarówno do śledzenia tego, co robi mój kod, jak i do analizy problemów z wydajnością.</p><p>ale zawsze używałem tego na sobie <i>rozwój</i> środowisko w bardzo kontrolowany sposób.</p><ul> <li>uruchom moją aplikację i ustaw ją w określonym stanie</li> <li>rozpocznij śledzenie w profilerze</li> <li>wykonaj określoną sekwencję czynności w mojej aplikacji</li> <li>zatrzymaj śledzenie i sprawdź wyniki.</li> </ul><p>czy sql profiler może być praktycznie używany w środowisku produkcyjnym?</p><p>moim pierwszym problemem jest to, że pogorszy to wydajność.</p><p>moje drugie zmartwienie polega na tym, że ponieważ jest on produkowany, nie uruchamiasz samych interesujących działań. musisz pozostawić profiler działający przez długi czas, a następnie przeanalizować wyniki. czy zestaw wyników stałby się zbyt niewygodny? (zajmuje zbyt dużo miejsca na dysku i jest zbyt trudne do zapytania).</p><p>czy ktoś używa sql profiler w produkcji?</p>
<p>użycie sql server profiler (narzędzie gui) do śledzenia serwera produkcyjnego nie jest dobrym pomysłem. ale to zależy od obciążenia. zamiast tego należy używać śledzenia sql po stronie serwera (patrz <a href="http://msdn.microsoft.com/en-us/library/ms188662%28v=sql.100%29.aspx">sp\_trace\_xxx</a> procedury). znalazłem również artykuły:</p><p> <a href="http://sqlblog.com/blogs/linchi\_shea/archive/2007/08/01/trace-profiler-test.aspx">wpływ na wydajność: śledzenie profilera vs. śledzenie sql po stronie serwera</a> ,</p><p> <a href="http://vyaskn.tripod.com/server\_side\_tracing\_in\_sql\_server.htm">automatyzacja śledzenia po stronie serwera w programie sql server</a> </p><p> <a href="http://weblogs.sqlteam.com/dang/archive/2007/12/16/avoid-causing-problems-with-profiler.aspx">nikaj powodowania problemów z profiler</a> </p><p>może będzie zainteresowany i przydatny.</p><p> <a href="http://msdn.microsoft.com/en-us/library/ms187023.aspx">rezerwuj online</a> mówi:</p><ul> <li>uruchom profiler zdalnie zamiast bezpośrednio na serwerze</li> <li>unikaj włączania zdarzeń, które występują często (np. zablokuj: nabyte), chyba że jest to absolutnie konieczne</li> <li>uwzględnij tylko potrzebne klasy zdarzeń</li> <li>określ filtry ograniczające, aby zmniejszyć liczbę zdarzeń</li> <li>unikaj zbędnych danych (np. sql: batchstarting i sql: batchcompleted)</li> <li>unikaj uruchamiania dużych śladów za pomocą profiler; zamiast tego rozważ śledzenie sql po stronie serwera</li> <li>ogranicz rozmiar pliku śledzenia po stronie serwera i zarządzaj wykorzystaniem miejsca</li> </ul>
Ok. Znalazłem to w czym problem.


Na początku myślałem, że to problem z DataProvided, ale to nie było. Odkryłem ten sam problem w SQLServer 2000 ....


Wyszukiwanie w google dowiedziałem się czegoś o plan wykonania. Biorąc w ten sposób, że zapytania zwiększyło wydajność 50%.


Krótki życiorys tego problemu jest to, że podczas wykonywania SP kodem, DBMS ma pewne problemy z planu wykonania, a nie korzystać z indeksów ...


Lepszą odpowiedź jest w tym poście:
 [Parametr Wąchania (lub Fałszowanie) w SQL Server](https://stackoverflow.com/questions/211355/parameter-sniffing-or-spoofing-in-sql-server)


Mam nadzieję, że to Ci pomoże. Użyj edycję programu Visual Studio do bazy danych skryptu z bazą danych. Działa jak czar i można użyć dowolnego systemu kontroli źródła, oczywiście najlepiej, jeśli ma wtyczek VS. Narzędzie posiada również szereg innych przydatnych funkcji. Sprawdź je tutaj, w tym wielkim poście


<http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx>


lub sprawdzić MSDN dla oficjalnej dokumentacji Prowadzimy [buildbota - Trac](http://buildbot.net/trac) w pracy. Nie używałem go zbyt dużo, ponieważ mój codebase nie jest częścią cyklu wydawniczego jeszcze. Ale prowadzimy testów na różnych środowiskach (OSX / Linux / Win) i wysyła e-maili - i to jest napisane w Pythonie. dziękuję. 
sądzę, że można by jeszcze poprawić jakość działania komputera. 
przeszukaj fora, ewentualnie załóż nowy temat z zapytaniem, które z posiadanych programów gigabyte należy zostawić do poprawnego działania systemu, a których można się pozbyć. 
zmniejszysz przez to liczbę uruchamianych progr… I druga odpowiedź Luke'a.


Mogę polecić [Confluence](http://www.atlassian.com/software/confluence/) a oto dlaczego: I przetestowany wiele rozwiązań opartych komercyjnych i wolne wiki. Ani jeden z nich jest zwycięzcą na wszystkich kontach, w tym zbiegu. Pozwól mi spróbować zrobić quest nieco krótsza od podsumowania, czego nauczyłem się ból i co jest ważne:


* WYSIWYG to większość posiada funkcję dla przedsiębiorstwa. Wiki bez niej pominąć
* Mówiąc, że w rzeczywistości WYSIWYG nie działa idealnie. To raczej cecha trzeba mieć, aby uzyskać przypadkowi użytkownicy nie bój się potworem, i zacząć go używać. Ale ty i że ktoś chce poważnie tworzenia treści, będzie bardzo szybko przyzwyczaić się do znaczników wiki. to jest szybsze i bardziej niezawodne.
* W przeglądarce musi być dobre z uprawnieniami kontroli (którzy widzą, edytować itd”stronę). Zbieg ma dobre, ale mam skarg (na skomplikowane należy umieścić tutaj)
* Będziemy chcieli dobrą *eksportowej* funkcję. Najbardziej daje jednej stronie „PDF” eksport, ale trzeba znacznie więcej. Na przykład, powiedzmy, że masz nas, chcesz wyeksportować cały FAQ prawo? czy to będzie działało?
* Makra: chcesz społeczność tworzenia makr. Pytałeś na przykład o możliwość **oceniać** strony, tutaj jest [ogniwo](http://confluence.atlassian.com/display/CONFEXT/Rate+Macro) do makra dla Confluence, który pozwala zrobić
* Struktura: chcesz, aby móc powiedzieć, że strona jest dzieckiem z innej strony, i móc przeglądać dane. Model wikipedia, osieroconych stron bez sturcture nie będzie działać w przedsiębiorstwie. (Myślę nas, chcesz mieć hierarchię nie?)
* Możliwość *łatwo* attache obrazek aby być osadzone w korpusie strony / artykułu. W spływie, trzeba przesłać obraz, a następnie można go osadzić, to może być trochę lepiej (CTR + V), ale myślę, że jest to dość łatwe dla 80% użytkowników.


Pod koniec dnia, należy pamiętać, że Wiki będzie cenny dla ciebie bardziej elastyczny jest. To musi być „puste” płótno, a wyobraźnia jest następnie wykorzystywany do „budowania” aplikację. W Confluence, znalazłem 3 różnych „najlepszych praktyk”, w jaki sposób stworzyć FAQ. Oznacza to, że mogę realizować wiele rzeczy.


Niektóre przykłady (używam do Wiki)


* FAQ: każdy błąd, problem jest zalogowany. Używany przez PS i inż. zmniejszona wewnętrzny czas dramatycznie wsparcie
* Stan konta utwór: I implemetned wyrafinowany „dashboard”, który można zobaczyć na pierwszy rzut oka, który klient jest w jakim stanie, wersji oprogramowania, którzy mają w spółce „właścicielem” THE custoemr etc”
* Produkt: cała dokumentacja, instrukcje instalacji, „co nowego” etc
* Dokumentacja techniczna, struktura DB i co znaczy stoły
* HR: lista kontaktów, repozytorium dokumentów


Moje drugie miejsce (15 miesięcy temu) był wolny [Deki\_Wiki](http://wiki.developer.mindtouch.com/Deki_Wiki) , czasu minęło, więc nie wiem, czy będzie to nadal moje drugie miejsce.


powodzenia! tak jak mówi kolega wyżej - sugerowałbym zaopatrzenie się we wtyczkę do tego.

wątpię, żeby na tym forum ktokolwiek był chętny do przerabiania skryptów. raczej sugerowałbym udanie się na jakieś forum poświęcone skript’owi. z wtyczek, które mogę polecić do sklepów to shopkeepers. Często jest to realizowane za pomocą [„Data Driven Subskrypcje”](https://msdn.microsoft.com/en-us/library/ms169673.aspx) , ale ta funkcja jest dostępna tylko w niektórych wersjach SQL: Enterprise i Business Intelligence, ale nie w standardzie.


Tak więc istnieje wiele twórczych obejścia. Ale nie lubię żadnego z nich, a wszystko to wymaga uczciwej trochę pracy poza SSRS.


Do obejścia widziałem to: Tworzenie subskrypcji, a następnie wyłączenie lub włączenie zadanie SQL, który wysyła subskrypcję (zidentyfikowanego przez GUID).


Tworzenie .exe .NET otoki do obsługi wysyłania wiadomości e-mail. Można go uruchomić kwerendę najpierw sprawdzić, ile zwracane są wiersze, a następnie w razie potrzeby wygenerować raport i umieścić go w wiadomości e-mail. Jest to dość szerokie, ale dam ci tak ogólną odpowiedź, jak tylko mogę.

**CTE ...**

* Są niezindeksowalne (ale mogą używać istniejących indeksów na obiektach, do których istnieją odwołania)
* Nie można mieć ograniczeń
* Są zasadniczo jednorazowe `VIEW` s
* Trwać tylko do momentu uruchomienia następnego zapytania
* Może być rekurencyjny
* Nie masz dedykowanych statystyk (polegaj na statystykach dotyczących podstawowych obiektów)

**#Temp Tables ...**

* Są prawdziwe zmaterializowane tabele, które istnieją w tempdb
* Może być indeksowany
* Może mieć ograniczenia
* Trwaj w życiu obecnego POŁĄCZENIA
* Może odwoływać się do innych zapytań lub podprocedur
* Masz dedykowane statystyki generowane przez silnik

Jeśli chodzi o użycie każdego z nich, mają bardzo różne przypadki użycia.Jeśli masz bardzo duży zestaw wyników lub musisz odwołać się do niego więcej niż raz, umieść go w tabeli `#temp` .Jeśli ma być rekurencyjny, jednorazowy lub po prostu dla uproszczenia logicznego, preferowany jest `CTE` .

Ponadto należy `CTE`**nigdy nie używaj do wykonania**.Prawie nigdy nie przyspieszysz przy użyciu CTE, ponieważ znowu jest to widok jednorazowy.Możesz zrobić z nimi kilka fajnych rzeczy, ale przyspieszenie zapytania nie jest jednym z nich. Po pierwsze: Tak, to jest coś, co należy do Wniosku o dokładnie określonym reson: Co się dzieje po nowe profile użytkowników są tworzone? Oczywiście, jeśli używasz domeny jest możliwe, aby mieć jakiś materiał umieścić w rejestrze stworzenia, ale to naprawdę nie jest przypadek użycia. Wniosek powinien sprawdzić, czy istnieją seetings i jeśli nie korzystać z ustawień domyślnych.


Mając na uwadze powyższe, możliwe jest, aby zmienić Inni użytkownicy Keys przez HKEY\_USERS ula.


Nie mam doświadczenia z Visual Studio 2003 projektu instalacji, więc tutaj jest trochę (całkowicie niezwiązanego) kod VBScript, że może po prostu dać ci pomysł, gdzie szukać:



```
const HKEY_USERS = &H80000003
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = ""
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing"
For Each subkey In arrSubKeys
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944
Next

```

(Kod uprzejmości [Jeroen Ritmeijer](http://jritmeijer.spaces.live.com/blog/cns!8A48A27460FB898A!965.entry) ) Domyślnie **zawsze wystarczy utworzyć nowy folder** w ramach tego samego projektu


* Dostaniesz jeden zespół (bez dodatkowego ILMerge gimnastyki)
* Łatwiej zaciemniać (bo trzeba będzie mniej typów publicznych i metod, najlepiej wcale)


Oddzielenie kodu źródłowego do wielu projektów ma sens tylko jeśli ...


* Mają pewne fragmenty kodu źródłowego, które są częścią projektu, ale nie rozmieszczenia domyślnie na wszystkich (lub testów jednostkowych, dodatkowych wtyczek itd.)
* Więcej deweloperów zaangażowanych i chcesz traktować swoją pracę jako zużyciu czarnej skrzynki. (Nie bardzo zalecane)
* Jeśli można wyraźnie oddzielić swój projekt do izolowanych Warstwy / modułów i chcesz się upewnić, że nie mogą one cross-konsumować **wewnętrzne** członków. (również nie zalecane, ponieważ trzeba będzie zdecydować, który aspekt jest najważniejszy)


Jeśli uważasz, że niektóre części kodu źródłowego może być wielokrotnego użytku, nadal nie tworzyć go jako nowego projektu. Tylko czekać, aż będzie naprawdę chcą używać go w innym roztworze i odizolować go od pierwotnego projektu, ile potrzeba. Programowanie nie jest lego, ponownego użycia jest zazwyczaj bardzo trudne i często nie nastąpi zgodnie z planem.