Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Error 241 – błąd konwersji

Termin Definicja
Error 241 – błąd konwersji

Error 241 pojawia się przy próbie konwersji wartości na typ danych, do którego jej format lub zawartość nie pasuje.

Co oznacza komunikat Msg 241 w SQL Server

Error 241, zwykle widoczny jako komunikat „Conversion failed when converting date and/or time from character string”, jest błędem silnika Microsoft SQL Server występującym podczas nieudanej konwersji tekstu na wartość typu daty lub czasu. Problem pojawia się wtedy, gdy ciąg znaków przekazany do CAST, CONVERT albo innego wyrażenia wymagającego typu daty nie reprezentuje poprawnej wartości albo jest zapisany w formacie niezgodnym z ustawieniami używanymi przez SQL Server.

Przykładem jest próba wykonania wyrażenia CAST('31/12/2025' AS date) w środowisku, w którym tekst jest interpretowany według reguł oczekujących kolejności miesiąc-dzień-rok. Podobny błąd może wystąpić dla pustego tekstu, wartości zawierającej opis zamiast daty, nieistniejącego dnia miesiąca, nieprawidłowego separatora albo daty wykraczającej poza zakres konkretnego typu. Error 241 nie wskazuje samodzielnie, który rekord zawiera problem. Informuje jedynie, że w analizowanym wyrażeniu konwersja nie mogła zostać wykonana.

Format tekstu, ustawienia języka i typ docelowy

Jedną z częstych przyczyn jest zależność od ustawień języka lub formatu daty sesji SQL Server. Tekst 02/03/2025 może zostać zinterpretowany jako 2 marca albo 3 lutego, zależnie od przyjętej kolejności składników. Jeżeli format nie odpowiada oczekiwaniom silnika, konwersja może zakończyć się błędem. Dlatego wartości przechowywane jako tekst nie powinny być oceniane wyłącznie na podstawie wyglądu w aplikacji. Należy sprawdzić rzeczywistą zawartość kolumny, typ danych oraz ustawienia sesji, między innymi język i format daty.

Znaczenie ma także typ, do którego następuje konwersja. date przechowuje datę bez godziny, natomiast datetime i datetime2 obejmują również czas, przy czym różnią się zakresem i dokładnością. Tekst zawierający ułamki sekund, strefę czasową lub dodatkowe znaki może wymagać innego typu albo wcześniejszego oczyszczenia. Nie każda wartość poprawna dla datetime2 będzie poprawna dla datetime. Przy analizie trzeba więc ustalić, jaki typ docelowy został użyty w zapytaniu, definicji kolumny, procedurze składowanej lub procesie importu.

Jak znaleźć rekord powodujący nieudaną konwersję

Diagnostykę należy rozpocząć od odtworzenia pełnego komunikatu wraz z numerem procedury, numerem wiersza i treścią zapytania, jeżeli są dostępne. Następnie trzeba ustalić, które kolumny tekstowe są przekształcane na date, datetime albo datetime2. Warto przejrzeć dane pod kątem pustych ciągów, wartości NULL, białych znaków, różnych separatorów, liter, niepełnych dat oraz rekordów zapisanych w kilku formatach. Szczególną uwagę należy zwrócić na dane pochodzące z plików CSV, formularzy, integracji i starszych tabel, w których data została zapisana jako varchar lub nvarchar.

Do bezpiecznego wyszukania podejrzanych wartości można wykorzystać TRY_CONVERT lub TRY_CAST. W przeciwieństwie do zwykłego CONVERT funkcje te zwracają NULL, gdy wskazanej wartości nie da się przekształcić, dzięki czemu można wyodrębnić problematyczne rekordy bez przerywania całego zapytania. Przykładowy schemat kontroli może wyglądać tak: SELECT kolumna FROM tabela WHERE kolumna IS NOT NULL AND TRY_CONVERT(date, kolumna, 112) IS NULL. Parametr stylu należy dobrać do faktycznego, jednoznacznego formatu danych, a nie do formatu wyświetlanego przez program.

Naprawa danych i zabezpieczenie zapytań przed Error 241

Trwała naprawa polega na usunięciu przyczyny, a nie na samym ukryciu komunikatu. Jeżeli kolumna zawiera daty, właściwym rozwiązaniem jest przechowywanie ich w odpowiednim typie daty i czasu zamiast w polu tekstowym. Przed zmianą typu trzeba jednak wykryć i poprawić wszystkie nieprawidłowe rekordy oraz sprawdzić, czy aplikacja zapisuje wartości w jednym, uzgodnionym formacie. W zapytaniach warto używać jawnych konwersji i formatów, których interpretacja nie zależy od ustawień regionalnych sesji. Należy również uważać na niejawne konwersje wykonywane podczas porównywania kolumn o różnych typach danych.

Jeżeli błąd pojawił się po imporcie lub zmianie aplikacji, trzeba porównać schemat źródła i celu, mapowanie kolumn oraz przykładowe rekordy z obu etapów. Sama zmiana kolejności dnia i miesiąca może nie wystarczyć, gdy część danych ma inny zapis albo zawiera dodatkowy czas. W środowiskach korzystających z procesów CDC zmiana typu kolumny daty może również wymagać sprawdzenia tabel zmian i konfiguracji przechwytywania danych, ponieważ konwersja może zakończyć się błędem w procesie pomocniczym mimo poprawnego wykonania zmiany w tabeli źródłowej. Przy diagnostyce należy zabezpieczyć kopię danych, przetestować poprawkę na reprezentatywnym zbiorze i dopiero potem zastosować ją w działającym środowisku.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę