SQL: Która baza i jaki obiekt zajmuje najwięcej pamięci na bufor?

2013-10-30

Ile masz dostępnej pamięci w systemie dowiesz się nawet z Task Managera.

Który proces zabrał tę pamięć też pomoże określić Task Manager.

Jeśli tylko na Twoim serwerze znajduje się SQL server, to prawdopodobnie w ten sposób ustaliłeś, że właśnie SQL server zużył prawie całą pamięć. Zgadłem?

Zastanówmy się, jak ustalić która baza zajęła tyle miejsca (bufor). Może do tego posłużyć zapytanie odnalezione w czeluściach Internetu (http://www.sqlservercentral.com/Forums/Topic1215340-391-1.aspx): Czytaj dalej »

By Rafał Kraik in SQL

Nadawanie uprawnień do importu i modyfikacji pakietów SSIS (DTS)

2013-10-30

Nadawanie uprawnień dla użytkownika, który zamierza tylko zaimportować pewne pakiety SSIS, a później nimi zarządzać można ograniczyć do utworzenia loginu na serwerze SQL dla tego użytkownika, utworzenia mu usera w bazie danych msdb oraz przypisaniu go do roli bazy danych db_dtsltduser

Wykaz tych ról oraz wynikające z nich uprawnienia są dokładniej opisane tutaj (dla różnych wersji SQL):

http://technet.microsoft.com/en-us/library/ms141053(v=sql.90).aspx

By Rafał Kraik in SQL

Biblioteka skryptów

2013-10-29

O jakie to fajne. Cały zbiór bardzo użytecznych skryptów. Dla mnie najbardziej ciekawe to SQL i PowerShell:

http://gallery.technet.microsoft.com/scriptcenter/site/search?f%5B0%5D.Type=RootCategory&f%5B0%5D.Value=databases&f%5B1%5D.Type=ProgrammingLanguage&f%5B1%5D.Value=SQL&f%5B1%5D.Text=SQL

By Rafał Kraik in Power Shell, SQL

Raz działa a raz nie… Zapytanie nie uruchamia się tylko w bazie master.

2013-10-29

Mam takie zapytanie:

select (
select count(*)
from ::fn_trace_geteventinfo( x.traceid )
where eventid = 111
) count_eventid
from ::fn_trace_getinfo( default ) x

nieważne co robi. Kiedy uruchamiam je na pewnym SQL 2005 otrzymuję błąd

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'x’.

Ale ciekawostka. Błąd pojawia się tylko, gdy zapytanie jest uruchamiane w master. W innych bazach danych działa!

Ponieważ klient nie miał możliwości określenia bazy podczas uruchamiania swojegozapytania, obszedłem ten problem. Zmieniłem dla loginu uruchamiającego to zadanie domyślną bazę danych na tempdb… i poszło!

By Rafał Kraik in SQL

SSRS Problem z SQL Server Reporting Services i wildcard SSL certificate

2013-10-29

Też miałem problem opisywany tu:

http://connect.microsoft.com/SQLServer/feedback/details/514292/reporting-services-2008-cannot-create-http-endpoint-with-a-wildcard-ssl-cert

i tu

http://answers.flyppdevportal.com/categories/sqlserver/sqlreportingservices.aspx?ID=27ecdb2d-d6be-4e10-a7e2-7fedba1266e2

i

http://blogs.msdn.com/b/mariae/archive/2007/12/12/ssl-configuration-and-reporting-services.aspx

http://social.technet.microsoft.com/Forums/en-US/046edd44-628a-4418-825e-d0b9ff41c28c/report-and-report-server-sites-wont-start-error-creating-http-endpoint

http://social.technet.microsoft.com/Forums/en-US/046edd44-628a-4418-825e-d0b9ff41c28c/report-and-report-server-sites-wont-start-error-creating-http-endpoint

Żadne z tych rozwiązań nie rozwiązało do końca mojego problemu, dlatego poniżej umieszczam najważniejsze fragmenty mojego pliku reportserver.config z małym komentarzem. Czytaj dalej »

By Rafał Kraik in SSRS

wylistowanie procedur zarejetrowanych przez sp_procoption

2013-10-28

Jak pisałem we wcześniejszym wpisie (dwa lata temu!), możliwe jest zarejestrowanie procedur, które mają się automatycznie uruchomić zaraz po włączeniu SQL Servera. Do rejestrowania takich procedur służy procedura sp_procoption.

Jednak jak wylistować procedury, które zostały zarejestrowane do automatycznego uruchomienia przez sp_procoption? Możesz do tego posłużyć się poleceniem:

SELECT ROUTINE_NAME

FROM MASTER.INFORMATION_SCHEMA.ROUTINES

WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),’ExecIsStartup’) = 1

Źródło: http://www.mssqltips.com/sqlservertip/1574/automatically-running-stored-procedures-at-sql-server-startup/

 

By Rafał Kraik in SQL

Page Life Expectancy

2013-10-28

Podczas regulowania ilości pamięci dostępnej dla SQL server przydaje się znajomość wartości Page Life Expectancy.

Liczba ta mówi ile czasu po wczytaniu strony z dysku, średnio rzecz ujmując, strona znajduje się w pamięci ale nikt się do niej nie odwołuje. Jeżeli ta liczba będzie wysoka to znaczy, że serwer dysponuje dużą ilością pamięci. Wczytuje sobie do bufora strony kiedy były one po raz pierwszy potrzebne a potem sobie tam leżą i leżą i dość długo nikt z nich nie korzysta. Zauważ, że gdyby pamięci było za mało, to taka nieużywana stron znajdująca się w buforze zostanie z niego prędko wyrzucona, by zrobić miejse dla kolejnej strony.

Dawniej MS mówił, że wartość ta powinna wynosić minimum 300 sekund. Obecnie można rozważać wyższe wartości.

Jeżeli na twoim serwerze liczba jest duża, a występują problemy z dostępną pamięcią dla innych procesów pomyśl o zmniejszeniu parametru MaxMemory. W SQL Server od 2008 R2 opcja działa natychmiast.

Informacje o page life expectancy znajdziesz w raportach o SQL serwerze lub wykonując zapytanie:

SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%’
AND [counter_name] = 'Page life expectancy’

Zajrzyj też na http://blog.sqlauthority.com/2010/12/13/sql-server-what-is-page-life-expectancy-ple-counter/

 

By Rafał Kraik in SQL