Symptomy
Rozpatrzmy następujący scenariusz:
-
Masz połączony serwer w programie Microsoft SQL Server 2008 R2.
-
Na serwerze połączonym znajduje się tabela z kolumną typu smalldatetime .
-
Aby wstawić rekord, który zawiera dane typu DateTime , w tabeli, należy uruchomić instrukcję INSERT lub INSERT INTO .
W tym scenariuszu instrukcja kończy się niepowodzeniem. Ponadto wyświetlany zostanie następujący komunikat o błędzie:
Dostawca OLE DB "SQLNCLI10" dla połączonego serwera "LinkServerName " zwrócił komunikat "wiele etapowych operacji OLE DB wygenerował błędy. Zaznacz poszczególne wartości statusu OLE DB (jeśli są dostępne). Nie wykonano żadnej pracy. Msg 7344, poziom 16, stan 1, dostawca 1The OLE DB Provider "SQLNCLI10" dla połączonego serwera "LinkServerName" nie można wstawić do tabeli "TableName" z powodu kolumny "ColumnName". Konwersja nie powiodła się, ponieważ wartość danych przepełniła typ danych wykorzystywany przez dostawcę.
Przyczyna
Ten problem występuje z powodu problemu z mapowaniem typu danych w programie SQL Server.
Rozwiązanie
Informacje o aktualizacji zbiorczej
SQL Server 2008 R2 z dodatkiem Service Pack 2
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 3. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2754552 Pakiet aktualizacji zbiorczej 3 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które uwzględniono w poprzedniej wersji poprawki do programu SQL Server 2008 R2 z dodatkiem Service Pack 2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2730301 Kompilacja programu SQL Server 2008 R2 opublikowanych po wydaniu programu SQL Server 2008 R2 z dodatkiem Service Pack 2
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Obejście
Aby obejść ten problem, użyj jednej z następujących metod:
-
Rzutowanie danych typu DateTime na typ smalldatetime w instrukcji.
-
Zmień kolumnę Typ smalldatetime na typ DateTime na serwerze połączonym.