Symptomy
Rozpatrzmy następujący scenariusz:
-
Masz serwer połączony w programie Microsoft SQL Server 2008 R2.
-
Na serwerze połączonym znajduje się tabela zawierająca kolumnę typu SMALLDATETIME.
-
Aby wstawić do tabeli rekord zawierający dane typu DATETIME, 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 bazy danych OLE "SQLNCLI10" dla serwera połączonego "LinkServerName " zwrócił komunikat "Wygenerowano błędy wieloetapowej operacji bazy danych OLE. Sprawdź każdą wartość stanu bazy danych OLE, jeśli jest dostępna. Nie wykonano żadnej pracy".Msg 7344, Poziom 16, Województwo 1, Wiersz 1 Dostawca bazy danych OLE "SQLNCLI10" dla serwera połączonego "LinkServerName" nie mógł wstawić do tabeli "Nazwa_tabeli" ze względu na kolumnę "ColumnName". Konwersja nie powiodła się, ponieważ wartość danych przepełniła typ danych używany przez dostawcę.
Przyczyna
Ten problem występuje z powodu problemu z mapowaniem typu danych w SQL Server.
Rozwiązanie
Informacje o aktualizacji zbiorczej
dodatek Service Pack 2 dla SQL Server 2008 R2
Poprawka rozwiązła ten problem została opublikowana po raz pierwszy w aktualizacji zbiorczej 3. Aby uzyskać więcej informacji na temat uzyskiwania tego zbiorczego pakietu aktualizacji dla dodatku Service Pack 2 dla SQL Server 2008 R2, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:
2754552 Pakiet aktualizacji zbiorczej 3 dla SQL Server 2008 R2 z dodatkiem Service Pack 2Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki z SQL Server 2008 R2 z dodatkiem Service Pack 2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej 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 Udostępniono kompilacje SQL Server 2008 R2 wydane po SQL Server 2008 R2 z dodatkiem Service Pack 2
Stan
Firma Microsoft potwierdziła, że jest to problem 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ę typu SMALLDATETIME na typ DATETIME na serwerze połączonym.