2014-12-12
Paczka SSIS miała właśnie wykonać pewną czynność wymagającą założenia locka exclusive na całej tabeli, co zwykle trwało kilka chwil. Niestety tym razem proces zatrzymał się i stoi już tak od 20 minut… Rzut oka w Activity monitor, a może lepiej w sys.dm_exec_connections lub sp_who2 i już wiadomo co się dzieje. Proces zablokowany przez proces ze spid=18. No ale hola hola… przecież SPID<51 to system! Czy możemy tak po prostu killować proces systemowy!? Osobiście nie polecam takiego postępowania.
Baza danych miała ustawione Auto Create Statistics i Auto Update Statistics na true. Ponieważ tabela nie była mała, przeliczanie statystyk trochę serwerowi zajęło. Trzeba było po prostu cierpliwie poczekać.I tu widać, że Auto Update Statistics warto w takim przypadku wyłączyć, tym bardziej, jeśli administrator zaplanował przeliczanie statystyk jako job w Agencie.
Najtrudniejszym krokiem w tym przypadku było stwierdzenie, że blokującym procesem są rzeczywiście statystyki. Można to było wywnioskować po:’
- dużej liczbie odczytów zapisów do danego pliku z tego procesu
- sesji profilera łapiącej zdarzenia związane ze statystykami.
Pamiętajmy, że można pozwolić SQL na utrzymywanie statystyk małych tabel automatycznie, duże zaś oznaczyć jako NORECOMPUTE i utrzymywać w nich statystyki ręcznie. Dokkładniej opisuje to np http://www.mssqltips.com/sqlservertip/1056/norecompute-option-of-update-statistics-in-sql-server/
A tu też ładne demo o statystykach: https://www.simple-talk.com/sql/performance/managing-sql-server-statistics/
2014-12-12
Dziwny przypadek. Na serwerze X jest zainstalowany SQL. Serwer działa wykorzystując domenowe konto serwisowe. Do serwera X z zainstalowanym SQL można się bez problemu dostać lokalnie, ale przy próbie połączenia zdalnego dostawało się komunikat:
TITLE: Connect to Server
Cannot connect to serverX.
The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server, Error: 0)

Większość artykułów jakie znajdowałem w Internecie wskazywała na problem z SPN. Komenda:
setspn -L serverX
listuje wszystkie SPN związane z danym komputerem, a dokładniej z kontem tego komputera w AD (serverX$). W moim przypadku znajdowałem tu również:
C:\>setspn -L ServerXRegistered ServicePrincipalNames for CN=ServerX,OU=W2k12,OU=App,OU=Company,OU=Servers,OU=com,DC=domain:
MSSQLSvc/ServerX.domain.com:1433
MSSQLSvc/ServerX.domain.com
TERMSRV/ServerX
TERMSRV/ServerX.domain.com
WSMAN/ServerX.pl.domain.com
WSMAN/ServerX
RestrictedKrbHost/ServerX
HOST/ServerX
RestrictedKrbHost/ServerX.domain.com
HOST/ServerX.domain.com Czytaj dalej »
2014-12-10
Jeśli bawiłeś się z makrami zapisanymi w skoroszycie makr osobistych, to zostały one zapisane w personal.xlsb. Skoroszyt znajduje się w
c:\users\<username>\AppDataW\Microsoft\Excel\XLSTART
Excel domyślnie otwiera pliki, które tu się znajdują przy uruchomieniu programu. W moim przypadku wystarczyło usunąć ten plik z tego folderu (nie był mi potrzebny) i od tej pory Excel nie otwiera dodatkowego niepotrzebnego okna.
2014-11-20
Początek niby niewinny. Brak miejsca w bazie. Powinno wystarczyć powiększyć plik, albo zdać się na Autogrow. Okazało się jednak, że wykonanie jakiejkolwiek czynności na bazie się nie wykonuje, bo jest blokowane przez inne procesy. Nawet proste otwarcie okienka properties dla bazy danych kończyło się komunikatem o lockach.
Rzut oka w sp_who lub Activity Monitora (z filtrem na tą jedną wybraną bazę danych) i już widać niepokojący stan bazy. Dużo zablokowanych procesów, praktycznie nic się nie dzieje, wszystko stoi, a Head Blockerem jest systemowy proces mirroringu. Jakimś rozwiązaniem byłoby wyłączenie mirroringu i skonfigurowanie go na nowo. To jednak dość mocny krok, jak na proste zablokowanie się procesów…
Pomocna okazała się komenda:
ALTER DATABASE MyDB SET PARTNER SUSPEND
a po sprawdzeniu, że blokady minęły
ALTER DATABASE MyDB SET PARTNER RESUME
Okazało się, że w nocy coś było nie tak z siecią i mirroring napotkał pewne problemy, które dotknęły właśnie tą jedną bazę danych (inne działały poprawnie). Oto próbki komunikatów znalezionych w ERRORLOG:
Database mirroring connection error 4 'An error occurred while receiving data: ’64(failed to retrieve text for this error. Reason: 15105)’.’ for 'TCP://server_name.domainname:5022′.
Database mirroring is inactive for database 'MyDB’. This is an informational message only. No user action is required.
2014-11-10

W dniach 4-7 listopada uczestniczyłem w konferencji Pass Summit 2014. Największa konferencja dla ludzi SQL odbywała się w Seattle. Oto sesje, w których uczestniczyłem:
- SQL Server 2014: In-Memory Overview Kevin Farlee DBA-321-M
- Upgrading and Migrating SQL Server John Martin DBA-410-M
- Latches, Spinlocks, and Lock Free Data Structures Klaus Aschenbrenner DBA-405
- SQL Server 2014: ColumnStore Index Sunil Agarwal DBA-318-M
- Query Tuning Mastery: Manhandling Parallelism, 2014 Edition Adam Machanic AD-400
- Solving Complex Problems with Extended Events Jonathan Kehayias DBA-406
- Maintaining High Performance When Using Encryption Steve Jones DBA-312
- Tuples, Sets, and Members: Understanding the Basics of MDX Brian Larson BIA-311
- Troubleshooting AlwaysOn Availability Groups in SQL 2014 Trayce Jordan DBA-404-M
- Shortcuts to SSIS via C#.Net – EzAPI Paul Rizza BIA-316-M
- Enter the Dragon: Running SQL 2014 on Windows Server Core Mark Broadbent DBA-310
- Deep Dive into Power Query Formula Language Matt Masson, Theresa Palmer-Boroski BID-401-M
- High Performance Infrastructure for SQL Server 2014 Michael Frandsen DBA-403
Więcej:
http://www.sqlpass.org/summit/2014/Live.aspx
lub
https://www.sqlpass.org/
2014-10-22
Data Driven subscription skonfigurowane, ale nie działa…. Jak znaleźć punk zaczepienia?
Zajrzyj do logów (w katalogu SSRS podkatalog logs). Każdy plik to log z ostatniego uruchomienia SSRS. Poszukaj w nim:
library!WindowsService_48!dc8!10/21/2014-13:15:03:: i INFO: Schedule 8da1eeb1-1656-4e67-87de-e297814b3673 executed at 10/21/2014 13:15:03.
schedule!WindowsService_48!dc8!10/21/2014-13:15:03:: Creating Time based subscription notification for subscription: 64b6ea63-b6b8-4378-869e-a93d1d96f4c6
library!WindowsService_48!dc8!10/21/2014-13:15:03:: i INFO: Schedule 8da1eeb1-1656-4e67-87de-e297814b3673 execution completed at 10/21/2014 13:15:03.
library!WindowsService_48!dc8!10/21/2014-13:15:03:: i INFO: Handling data-driven subscription 64b6ea63-b6b8-4378-869e-a93d1d96f4c6 to report
/FOLDER_NAME/SUBFOLDER_NAME/REPORT_NAME, owner: USERNAME, delivery extension: Report Server Email.
library!WindowsService_48!dc8!10/21/2014-13:15:04:: i INFO: Initializing EnableExecutionLogging to 'True’ as specified in Server system properties.
library!WindowsService_48!1f4c!10/21/2014-13:15:05:: i INFO: Initializing EnableExecutionLogging to 'True’ as specified in Server system properties.
library!WindowsService_48!1f4c!10/21/2014-13:15:05:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.InvalidReportParameterException: ,
Microsoft.ReportingServices.Diagnostics.Utilities.InvalidReportParameterException: Default value or value provided for the report parameter 'CollectionID’ is
not a valid value.;
W tym przypadku widzimy, że collectionID ma niepoprawną wartość. Oznacza to, że tabela zasilająca data driven subscription przechowuje niepoprawne wartości lub wartości niepoprawnego typu. Popraw, aż w końcu w logu znajdziesz informację o poprawnym uruchomieniu subskrypcji: Czytaj dalej »
2014-10-14
Wykonujesz polecenie, a tu fiuuuu, wszystko przeleciało przez ekran. Wolałbyś żeby wyniki pokazywane były partiami, po jednym ekranie, a np. po naciśnięciu SPACE ładował się kolejny ekran. Zastosuj
Get-process | Out-Host -Paging
Po wyświetleniu pierwszego ekranu otrzymasz prompt:

No ale…. czasami możesz też dostać błąd:
out-lineoutput : Metoda lub operacja nie jest zaimplementowana.
At line:1 char:1
+ Get-process | Out-Host -Paging
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [out-lineoutput], NotImplementedException
+ FullyQualifiedErrorId : System.NotImplementedException,Microsoft.PowerShell.Commands.OutLineOutputCommand
Jak to Metoda lub operacja nie jest zaimplementowana. !!! Microsoft zapomniał i wypuścił taki produkt w świat!?
Nie… Jest to przykład parametru zależnego od hosta (gdzie przez host rozumiemyprogram uruchamiający polecenia powershell). Stronicowanie działa poprawnie w interfejsie znakowym, ale w ISE nie jest zaimplementowane. Tam masz się bawić suwaczkami i przewijać wynik… Na otarcie łez, pamiętaj, że w ISE możesz korzystać z Out-GridView:
Get-process | Out-GridView
