Ознаки
Розглянемо такий сценарій:
-
У вас є пов'язаний сервер у Microsoft SQL Server 2008 R2.
-
На зв'язаному сервері є таблиця зі стовпцем типу SMALLDATETIME.
-
Виконайте інструкцію INSERT або INSERT INTO, щоб вставити в таблицю запис, який містить дані типу DATETIME.
У цьому випадку інструкція не вдається. Крім того, з'являється таке повідомлення про помилку:
Постачальник OLE DB "SQLNCLI10" для зв'язаного сервера "LinkServerName " повернув повідомлення "Кілька кроків операції OLE DB, створені помилки. Перевірте кожне значення стану бази даних OLE, якщо доступне. Роботу не виконано.".Msg 7344, рівень 16, стан 1, рядок 1 Постачальник OLE DB "SQLNCLI10" для зв'язаного сервера "LinkServerName" не може вставити в таблицю "TableName" через стовпець "Ім'я стовпця". Не вдалося перетворити, оскільки значення даних переповнило тип даних, який використовується постачальником.
Причина
Ця проблема виникає через проблему зі зіставленням типів даних у SQL Server.
Спосіб вирішення
Сукупні відомості про оновлення
SQL Server 2008 R2 із пакетом оновлень 2
Виправлення цієї проблеми вперше випущено в сукупному пакеті оновлень 3. Щоб отримати додаткові відомості про те, як отримати цей пакет сукупний пакет оновлень для пакета SQL Server 2008 R2 з пакетом оновлень 2 клацніть номер статті в базі знань Microsoft Knowledge Base:
2754552 Сукупний пакет оновлень 3 для SQL Server 2008 R2 із пакетом оновлень 2Note, оскільки збірки сукупні, кожен новий випуск виправлення містить усі виправлення та всі виправлення системи безпеки, які входили в попередній випуск виправлення SQL Server 2008 R2 з пакетом оновлень 2. Радимо застосувати останній випуск виправлення, який містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2730301 Збірки SQL Server 2008 R2, випущені після випуску пакета оновлень 2 (SQL SERVER 2008 R2)
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Інші способи вирішення
Щоб вирішити цю проблему, скористайтеся одним із наведених нижче способів.
-
У операторі призначте тип DATETIME типу SMALLDATETIME.
-
Змініть стовпець типу SMALLDATETIME на тип DATETIME на зв'язаному сервері.