Симптоми
Обмислете следния сценарий:
-
Имате свързан сървър в Microsoft SQL Server 2008 R2.
-
В свързания сървър има таблица, която има колона от тип SMALLDATETIME.
-
Изпълнявате команда INSERT или INSERT INTO, за да вмъкнете запис, който съдържа данни от тип DATETIME в таблицата.
В този случай командата е неуспешна. Освен това се извежда следното съобщение за грешка:
Доставчикът на OLE база данни "SQLNCLI10" за свързан сървър "LinkServerName " върна съобщение "Генерирани грешки от многостъпков OLE база данни. Проверете всяка стойност за състоянието на OLE база данни, ако е налична. Не е свършила никаква работа.".Msg 7344, ниво 16 състояние 1, ред 1 Доставчикът на OLE база данни "SQLNCLI10" за свързан сървър "LinkServerName" не можа да ВМЪКНЕ INTO таблица "Име_на_таблица" поради колона "Име_на_колона". Преобразуването беше неуспешно, защото стойността на данните препълни типа данни, използван от доставчика.
Причина
Този проблем възниква поради проблем със съпоставянето на типове данни в SQL Server.
Решение
Информация за кумулативна актуализация
SQL Server 2008 R2 Service Pack 2
Корекцията за този проблем първо е издадена в кумулативна актуализация 3. За повече информация как да получите този сборен пакет за SQL Server 2008 R2 Service Pack 2 щракнете върху следния номер на статия в базата знания на Microsoft:
2754552 Кумулативен пакет за актуализация 3 за SQL Server 2008 R2 Service Pack 2Note Тъй като компилациите са кумулативни, всяка нова корекция издание съдържа всички горещи поправки и всички корекции на защитата, които са включени в предишните SQL Server 2008 R2 service pack 2 издание на корекция. Препоръчваме да помислите за прилагането на най-новата корекция версия, която съдържа тази актуална корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:
2730301 Компилациите на SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2 Service Pack 2
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Заобиколно решение
За да заобиколите проблема, използвайте един от следните методи:
-
Прехвърляне на данни от тип DATETIME към типа SMALLDATETIME в командата.
-
Променете колоната тип SMALLDATETIME на типа DATETIME на свързания сървър.