SQL — инструкция INSERT с преобразованием BIT

В SQL есть оператор INSERT, над которым я работаю. См. запрос ниже. Когда я запускаю оператор, он дает эту ошибку:

Сообщение 8152, уровень 16, состояние 2
Строковые или двоичные данные будут усечены.
Выполнение инструкции завершено.

Как исправить эту ошибку?

В старой таблице (откуда поступают данные) столбец [Environment] называется [Err_Dev_Prod] и имеет тип данных NVARCHAR (50). В новой таблице это тип данных BIT.

IF OBJECT_ID(N'LCN_Board', N'U') IS NOT NULL DROP TABLE LCN_Board
CREATE TABLE [LCN_Board](
    [Metric_Id] VARCHAR(128) NULL,
    [Environment] BIT NULL, --[Err_Dev_Prod]
    [Date/Time] DATETIME NULL,
    [IMPORT_DATE] DATE DEFAULT GETDATE() NULL,
    [MODIFIED_DATE] DATE DEFAULT GETDATE() NULL,
    [REPORTING_PERIOD]DATE NULL,
    [Process_ID] Uniqueidentifier DEFAULT (NEWID()) NOT NULL,
    [Key] VARCHAR(128) NULL
) ON [PRIMARY]
GO
INSERT INTO LCN_Board
(   [Metric_Id], 
    [Environment], 
    [Date/Time], 
    [IMPORT_DATE], 
    [MODIFIED_DATE], 
    [REPORTING_PERIOD],
    [Process_ID]
    )
SELECT  
    [Metric Id], 
    CASE LOWER([Err_Dev_Prod]) WHEN 'yes' THEN 1 ELSE 0 END,
    [Date/Time], 
    [IMPORT_DATE], 
    [MODIFIED_DATE], 
    [REPORTING_PERIOD],
    [Process_ID] 
FROM dbo. LCN_Board_old
ORDER BY [Date/Time];
GO

person ObserveDBA    schedule 28.08.2015    source источник
comment
попробуйте использовать true и false вместо 1 и 0   -  person Raj Kamuni    schedule 28.08.2015
comment
Это не похоже на битовое поле и его преобразование, вызывающее эту ошибку. Скорее всего, размер поля старой таблицы Metric Id или Process_ID больше VARCHAR(128).   -  person Andy Korneyev    schedule 28.08.2015
comment
Пожалуйста, опубликуйте полное определение обеих таблиц LCN_Board_old и LCN_Board   -  person Murtaza    schedule 28.08.2015
comment
Это полная старая таблица CREATE TABLE [LCN_Board_old]( [Metric_Id] NVARCHAR(255) NULL, [Описание] NVARCHAR (MAX) NULL, [Обнаружена ошибка в разработке или производстве?] NVARCHAR (50)NULL, [Дата/время] DATETIME NULL, [IMPORT_DATE] DATE DEFAULT GETDATE() NULL, [MODIFIED_DATE] DATE DEFAULT GETDATE() NULL, [REPORTING_PERIOD] NVARCHAR (50)NULL, [Process_ID] Уникальный идентификатор DEFAULT (NEWID()) NOT NULL ) ON [PRIMARY]   -  person ObserveDBA    schedule 28.08.2015
comment
Здравствуйте, Энди Корнеев. Итак, мне нужно сделать это в операторе SELECT или мне нужно собрать пакет? Если это утверждение, то как его сформулировать? Спасибо   -  person ObserveDBA    schedule 28.08.2015


Ответы (1)


Это не относится к преобразованию BIT, попробуйте увеличить лимит varcahar или установить его на максимум, если это возможно.

person Irfan Shaikh    schedule 28.08.2015