Усечение строки, ANSI_WARNINGS OFF - PullRequest
2 голосов
/ 29 марта 2011

Использование SQL Server 2008 (R2). У меня есть две таблицы в разных базах данных (с одинаковым количеством столбцов и типов данных - но разных размеров) , Я вставляю значения из одного в другое, но проблема в том, что в исходной таблице есть слово: nvarchar (200), а в таблице назначения есть поле типа nvarhchar (100). И в исходной таблице есть данные с полями больше 100 символов, поэтому ошибка:

*String or binary data would be truncated is thrown.*

Я пытался использовать

-- SourceServer is passed in at command prompt (batch)
    SET ANSI_WARNINGS OFF
    GO

    INSERT INTO DestinationTable(col1, col2,...) 
    SELECT col1, col2, ... 
    FROM $SourceServer.dbo.SourceTable 

    SET ANSI_WARNINGS ON
    GO

Это, однако, выдает ошибку, которая выглядит так: "INSERT failed because the following SET options have incorrect settings: 'ANSI_WARNINGS'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations."

Есть идеи, как я могу это исправить?

1 Ответ

3 голосов
/ 29 марта 2011

Вы можете усечь данные самостоятельно:

insert into desttable(destcolumn)
select left(sourcecolumn, 100) from sourcetable
...