将varbinary数据插入SQL Server数据库

时间:2014-08-25 13:50:58

标签: sql-server sql-server-2008

我有这张桌子:

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

我尝试在SQL Server 2008中创建一个脚本,以便在我的本地数据库中插入一行

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

但是我收到了这个错误:

  

字符串或二进制数据将被截断   声明已经终止。

1 个答案:

答案 0 :(得分:23)

两个问题:

问题#1 :不再使用TEXT - 已弃用。使用VARCHAR(n) n的合适尺寸,或者真的必须(仅当 真的 必须时) ),使用VARCHAR(MAX)

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

我个人也会避免在所有大写中写一切 - 这只是让它更难阅读!我会尽量避免非常泛型列名称,如NameDescription - 这些列名不是很直观,可能会与其他表的列和/或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