Вставка данных varbinary в базу данных SQL Server

У меня есть эта таблица:

   (<NUM_TRF int
   ,<NAME, varchar(255),>
   ,<DESCRIPTION, text,>
   ,<REPORT, varbinary(max),>)

Я пытаюсь создать script в SQL Server 2008, чтобы вставить строку в свою локальную базу данных,

INSERT INTO [MY_DB_APP].[dbo].[CONNECT_USER]
VALUES(1, 'name', 'description', Cast('wahid' As varbinary(max)) )
GO

но я получаю эту ошибку:

Строковые или двоичные данные будут усечены.
Заявление завершено.

Ответ 1

Два вопроса:

Проблема №1: больше не используйте TEXT - он устарел. Используйте VARCHAR(n) с подходящим размером n, или если вы действительно должны (только если вы ДЕЙСТВИТЕЛЬНО), используйте VARCHAR(MAX)

CREATE TABLE dbo.CONNECT_USER
(
    NUM_TRF int,
    NAME varchar(255),
    DESCRIPTION varchar(1000),
    REPORT varbinary(max)
)

Я лично также не буду писать ВСЕ ВСЕ В КАПСАХ - это просто усложняет чтение! И я попытался бы избежать очень общих имен столбцов, таких как Name или Description - они не очень интуитивно понятны и могут столкнуться с другими столбцами таблицы и/или с зарезервированными ключевыми словами SQL Server. Попытайтесь использовать более выразительные, более контекстные имена столбцов, которые имеют смысл в вашей среде (ConnectUsername или что-то еще)

Проблема # 2: при выполнении INSERT я бы рекомендовал всегда определить столбец, в который вы хотите вставить. Это позволяет избежать неприятных неожиданностей при реструктуризации таблицы или добавлении новых столбцов:

INSERT INTO [MY_DB_APP].[dbo].[CONNECT_USER](NUM_TRF, NAME, DESCRIPTION, REPORT)
VALUES(1, 'name', 'description', CAST('wahid' AS VARBINARY(MAX)))
GO

Ответ 2

Хм, "тривиальный ответ преобразован в комментарий". Но это правильный ответ, и в качестве комментария нет никакого способа принять его в качестве правильного ответа. И как пользователь с менее чем 50 репутацией, я технически не могу давать комментарии. : Rolleyes:

Итак, я скажу еще раз, нетривиально на этот раз...

На этот вопрос будет дан ответ: Обновить таблицу, вставив данные VARBINARY