Helpdesk: Nie widać całej pojemności pendrive

2016-08-17

Pokusiły mnie zabawy z Linuxem. Przygotowałem sobie wersję linuxa do uruchomienia z pendrive i… stało się. Od tej pory pod Windows z 4 GB pendrive widać tylko 5MB!

Dam radę pomyślałem… znam polecenia z linii komend, uruchamiam więc diskpart. I tu uwaga – narzędzie jest dość mocne, więc jeśli coś zrobisz nie tak możesz stracić dane!

Polecenie

list disk

powoduje wsyświetlenie zestawu dysków zainstalowanych na komputerze. Aktywny w danej chwili dysk (czyli ten z którym w danej chwili pracujesz) jest oznaczony gwiazdką. Jeśli żaden dysk nie jest oznaczony gwiazdką to wybierz go poleceniem:

select disk <numer dysku>

Aby się upewnić czy właściwy dysk został wybrany użyj ponownie list disk

disks Czytaj dalej »

SQL: Bezbolesna zmiana collation serwera SQL po instalacji

2016-08-10

Zazwyczaj wskutek złej komunikacji może okazać się, że serwer został zainstalowany z niepoprawnym collation. Generalnie każde collation jest dobre, ale problem zaczyna się wtedy, gdy na serwerze pojawia się baza danych ze swoim specyficznym collation i niektóre zapytania lub procedury kończą się błędem „collation conflict”.

Problem można próbować rozwiązywać na wiele sposobów.

Zdecydowanie najlepszy – tak zmienić kod zapytań, aby podczas odwoływania do obiektów serwerowych, tworzenia obiektów tymczasowych itp. Korzystać z collation bazy danych. Wystarczy w tym celu zazwyczaj dodać instrukcję COLLATE DATABASE_DEFAULT. Niestety jest to edycja kodu aplikacji, do którego nie zawsze masz dostęp.

Zmiana collation bazy danych, dość skomplikowany proces, bo wymaga właściwie utworzenia bazy danych na nowo ze wszystkimi obiektami korzystającymi z collation takiego jak na serwerze. Obiekty jak tabele, indeksy, procedury, funkcje trzeba zeskryptować, odtworzyć obiekty i zaimportować dane na nowo. Bardzo skomplikowane, długotrwałe i łatwo o pomyłkę, a na dodatek nie zawsze aplikacja pozwala na pracę z innym collation, więc nie zawsze ta metoda powinna być w ogóle brana pod uwagę.

Zmiana collation na serwerze. To trochę ostateczność, bo zmiana może zepsuć z kolei inne bazy danych zainstalowane na serwerze. Na dodatek zmiana collation wiąże się z przebudowaniem baz systemowych, innymi słowy utracone zostaną informacje o bazach danych, loginach, opcjach serwera, endpointach itp. Nic więc dziwnego, że i ta opcja nie jest mile widziana przez administratorów. Proces przebudowy systemowych baz danych polega na uruchomieniu komendy:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName  /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]  /SQLCOLLATION=CollationName 

i jest opisany na stronach MS:  https://msdn.microsoft.com/en-us/library/ms179254.aspx

Okazuje się, że jest też nieoficjalny sposób zmiany collation na serwerze z wykorzystaniem opcji q Czytaj dalej »

By Rafał Kraik in SQL

SQL: Profiler nie zapisuje INSERT/UPDATE/DELETE

2016-07-05

Chciałem zpaisać w trace inforacje o tym ile czasu zajmuje insert do tabeli „printjob”. Developer podejrzewał, że coś jest nie tak po tronie SQL, a admin SQL czyli ja próbował się przed tym zarzutem obronić. Rzeczywiście – tabelka jak to tabelka, kilka tysięcy rekordów, struktura dość poprawna, brak triggerów, kluczy obcych itp. Zapisy powinny być szybkie.

Pierwszym krokiem było sprawdzenie ile czasu wykonuje się INSERT. Dodatkowo chciałem aby profiler nie łapał abyt wielu zdarzeń, więc dość restrykcyjnie ustawiałem filtry. W textdata chciałem np. złapać wyłączneie zdarzenia

LIKE '%insert%printjob%’

Niestety moje inserty się nie pokazywały. Baza nie ma procedur, i jakby nie partzeć, żeby dopisać rekord musiałoby się gdzieś wykonać INSERT….printjob.

Zaczynałem od:

  • batch starting / completed
  • statement starting / completed
  • SP starting / completed

ale dopiero dodanie

  • SP statement started / completed

pomogło.

W moim przypadku – SQL niewinny, a developer musi szukać dalej 😉

By Rafał Kraik in SQL

Sybase: Ucz się razem ze mną! Nowy blog o SAP ASE

2016-07-01

Baza danych SAP Adaptive Server Enterprise znana wcześniej jako SAP Sybase albo Sybase ASE nie ma aż tak wielu zasobów, co MS SQL Server. A przecież administratorzy też spotykają problemy i muszą je rozwiązywać. Brakuje książek, filmów, tutoriali, a baza jest używana i to wcale nie do małych zastosowań. Istnieją na rynku produkty, które współpracują właśnie z bazą Sybase i pod tą bazę zostały skonfigurowane.

Mam przyjemność poznawać tą bazę. Postanowiłem opisać swoje doświadczenia. Informuję, że uruchamiam nowego bloga:

https://sap-database.blogspot.com/

SAP-ASE-title-200x63

na którym będę opisywał, czego nowego dowiedziałem się o bazie danych SAP ASE / Sybase. Pierwsze tematy dotyczą  urządzeń, ale będą kolejne i kolejne. Zainteresowanych zapraszam do korzystania a może nawet do współredagowania bloga.

SQL: Collation conflict – tymczasowa procedura

2016-06-23

SQL serwer pozwala na to, żeby na serwerze obowizywało inne collation niż w bazie danych. Ale jeśli utworzysz obiekt tymczasowy, apotem zechcesz wykonywać złaczenia (JOIN) z tym obiektem, to… marny twój los.

Tym razem programista zdecydował się utworzyć procedurę tymczasowa:

CREATE PROCEDURE #test @statement VARCHAR(50)

AS

IF @STATEMENT IN (’DISPLAY’, 'HIDE’)

BEGIN

Podczas tworzenia procedury pojawiał się bład:

Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.

Ale co jest złe? Parametr, cała procedura, IF?

Pomogła następujca poprawka:

IF @STATEMENT IN (’DISPLAY’ COLLATE DATABASE_DEFAULT , 'HIDE’ COLLATE DATABASE_DEFAULT)

Najwyraźniej stałe napisowe korzystały z collation specyficznego dla serwera (tempdb). Collation DATABASE_DEFAULT wyraźnie precyzuje jak porównywać napisy.

By Rafał Kraik in SQL

Outlook: operacja została anulowana z powodu ograniczeń nałożonych na ten komputer

2016-06-18

Podczas otwierania łaczy w mailu pojawia się błąd:

operacja została anulowana z powodu ograniczeń nałożonych na ten komputer

Link nie otwiera się.

Istnieje klika rozwiązań w sieci, w tym automatyczne kreatory do uruchomienia na komputerze, które zrobią nie wiadomo co, przywracanie ustawień domyślnych Internet Explorer, których czort wie czy i po co w ogóle zmieniał. A jest prosta metoda opisana na kilku forach i u mnie też zadziałała:

1. Uruchom regedit.exe

2. Przejdź do H_KEY_CLASSES_ROOT, wyszukaj klucza .htm, .html, .shtm, .shtml i zmień ich właściwość Default na htmlfileoutlook_registry

3. Przejdź do H_KEY_LOCAL_MACHINE\SOFTWARE\Classes, wyszukaj klucza .htm, .html, .shtm, /shtml i zmień ich właściwość Default na htmlfile

4. Uruchom ponownie outlook. Ma działać!

By Rafał Kraik in Helpdesk

Powershell: Sprawdzenie czy napis zawiera datę

2016-06-01

Oto następujący problem. Z pliku pobieramy dane, które dalej mają być przesłane do bazy danych. Niestety niektóre dane w pliku są nieprawidłowe. Np. data 2016-02-31 …

Jak sobie z tym poradzić?

[System.DateTime]$d = Get-Date
[bool]$isDate = [System.DateTime]::TryParse('2016-02-31',[ref]$d)
if($isDate)
{
    Write-Host "It is a date"
}
else
{
    Write-Host "It is not a date"
}

O co chodzi i dlaczego właśnie takie kroki są potrzebne?

  • Deklarujemy zmienna typu DateTime. Aby zmienna rzeczywiście powstała, musi być zainicjowana wartością. Mogła to być dowolna wartość, więc np. bieżąca data
  • Typ DateTime posiada statyczną metodę TryParse, która próbuje konwertować napis na zmienną typu DateTime. Funkcja TryParse przyjmuje 2 argumenty: napis do skonwertowania i zmianną, gdzie zostanie zapisana skonwertowana data. Ta zmienna musi być przekazywana przez referencję stąd zapis [ref]. Przekazywanie parametru przez referencję pozwala funkcji zmodyfikować wartość zmiennej, która istnieje na zewnątrz ciała tej funkcji.
  • TryParse zwraca $true, jeżeli konwersja się powiodła (i wtedy zmienna $d zawiera wartość daty) lub $false, jeżeli konwersja się nie powiodła (i tedy zmienna zawiera umowną wartość 0001-01-01).
By Rafał Kraik in Power Shell