批处理执行时发生错误

时间:2015-05-30 11:20:56

标签: sql sql-server

我试图在数据库中创建一个简单的表。

CREATE TABLE [dbo].[klanten]
(
    [Klant_naam] TEXT NOT NULL PRIMARY KEY, 
    [Klant_adres] TEXT NULL, 
    [klant_gsm] TEXT NULL, 
    [klant_gewicht] INT NOT NULL, 
    [klant_lengte] INT NOT NULL, 
    [klant_klacht] TEXT NOT NULL
)

当我尝试更新它时,弹出以下错误。

The error

3 个答案:

答案 0 :(得分:0)

documentation发出警告:

  

将来的版本中将删除ntext,text和image数据类型   Microsoft SQL Server。避免在新的中使用这些数据类型   开发工作,并计划修改当前使用的应用程序   他们。请改用nvarchar(max),varchar(max)和varbinary(max)。

所以,试试这个:

CREATE TABLE [dbo].[klanten] (
    [Klant_naam] varchar(max) NOT NULL PRIMARY KEY, 
    [Klant_adres] varchar(max)  NULL, 
    [klant_gsm] varchar(max)  NULL, 
    [klant_gewicht] INT NOT NULL, 
    [klant_lengte] INT NOT NULL, 
    [klant_klacht] varchar(max)  NOT NULL
)

嗯,这也不是很有效,因为索引键的限制为900字节。如何使用代理键和合理的列长度?

CREATE TABLE [dbo].[klanten] (
    Klant_Id int not null identity(1, 1) primary key,
    [Klant_naam] varchar(255) NOT NULL unique, 
    [Klant_adres] varchar(max)  NULL, 
    [klant_gsm] varchar(max)  NULL, 
    [klant_gewicht] INT NOT NULL, 
    [klant_lengte] INT NOT NULL, 
    [klant_klacht] varchar(max)  NOT NULL
);

答案 1 :(得分:0)

尝试更改" TEXT"数据类型为" NCHAR()"或任何其他类似的。

答案 2 :(得分:0)

尝试更新数据库时通常会发生此错误,但某些字段无法更新。例如,我在表中有5个字段:

[Id]           INT            IDENTITY (1, 1) NOT NULL,
[Path]         NVARCHAR (MAX) NOT NULL,
[Name]         NVARCHAR (50)  NOT NULL,
[Url]          NVARCHAR (MAX) NULL,
[SecureUrl]    NVARCHAR (MAX) NULL

我已经工作了一段时间,并做了一些记录。其中一些在[Url]处的值为NULL。我突然决定换桌子:

[Id]           INT            IDENTITY (1, 1) NOT NULL,
[Path]         NVARCHAR (MAX) NOT NULL,
[Name]         NVARCHAR (50)  NULL,
[Url]          NVARCHAR (MAX) NOT NULL, //!!! HERE A PROBLEM, I ALREADY HAVE NULL RECORDS IN DATA
[SecureUrl]    NVARCHAR (MAX) NULL

问题是我的数据是用旧模型制作的,它在[Url]上有NULL的记录,但在新模型中,NULL值不能在[Url]。因此,与新模型一样,旧数据也不正确。因此,我们在更新时会出现错误。