Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法创建大于允许的最大行大小8060的大小为8081的行_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql server 无法创建大于允许的最大行大小8060的大小为8081的行

Sql server 无法创建大于允许的最大行大小8060的大小为8081的行,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我检查了stackoverflow(I)和其他链接的每个链接,但没有运气 我必须分析一个应用程序。所以我通过特定路径上的应用程序实用程序获得了备份文件。我在Sqlserver 2014完整版中正确还原了备份文件。然后我将应用程序的配置文件更改为这个sqlserver 之后,当运行应用程序并通过应用程序提交员工表单时,其会给出上述错误 Employee表数据库结构如下,它包含47列,没有任何行(这是第一个条目) 和insert语句(也有47个值),其错误也显示在应用程序中,如下所示: INSERT

我检查了stackoverflow(I)和其他链接的每个链接,但没有运气

我必须分析一个应用程序。所以我通过特定路径上的应用程序实用程序获得了备份文件。我在
Sqlserver 2014完整版中正确还原了备份文件。然后我将应用程序的配置文件更改为这个sqlserver

之后,当运行应用程序并通过应用程序提交员工表单时,其会给出上述错误

Employee表数据库结构如下,它包含47列,没有任何行(这是第一个条目)

和insert语句(也有47个值),其错误也显示在应用程序中,如下所示:

INSERT INTO employee
(
wcsuid,lastupdatedate,updatedatetime,locationid,isactive,CreatedDate,sdate,identityemployeeno,employeeid,firstname,lastname,ssn,dob,gender,address,addressLine2,city,state,zipcode,isinternationaladdress,telephone,cellphone,IdentityJobTitleNo,manager,hiredate,terminationdate,username,
userpassword,userpassword_required,employeestanding,identityroleid,loggedin,punchedin,punchedinTime,punchedinDate,contactname,contactaddress,contactaddressLine2,contactcity,contactstate,contactzipcode,isinternationalcontactaddress,contactphone,contactcellphone,relationtoemployee,worksoncommission,overrideitemcommission) 
VALUES 
(
'2015121512201580210002','','20151215122015802','','','20151215','','4','','Ajayendra','Raghuvanshi','','19782707','M','','','','','','','0792762063','','','','00000000','00000000','ajayendra',
'SdYHcqaxf1gMjjSkjmpUiw==','N','','','','','','','','','','','','','','','','','N','N') 
是字符字段的限制,但我用值检查了所有长度,没有得到错误背后的任何逻辑


所以问题是如何解决错误以及它为什么会出现?

我不是SQL Server专家,但。。。加上上面所有的字段长度,我得到了
4046
(我可能犯了一些错误-现在还太早,我还在喝第一杯咖啡……)。现在来看:

nchar[(n)] 固定长度的Unicode字符串数据。n定义字符串长度,必须是1到4000之间的值。存储大小是n字节的两倍。当排序规则代码页使用双字节字符时,存储大小仍为n字节。根据字符串的不同,n字节的存储大小可以小于为n指定的值。nchar的ISO同义词是national charnational char

请注意,存储每个字符需要两个字节。做
2*4046
我们有
8092
字节行长度!还要注意,
nchar
是固定长度,我假设在创建条目/行时分配该长度,因此它会生成您看到的错误,告诉您该行太长。我希望它至少在您创建表时警告您

解决
  • 规范化更多:将表格一分为二,例如,如果您以后需要每个员工的家庭和工作地址,可以使用
    employeeaddress
    表格

  • 使用可变或动态长度的
    nvarchar
    。存储仍然是每个字符2字节,但仅用于插入的数据(未预先分配)。如果尝试将所有字段填充到其最大长度,则会达到相同的限制


  • 我不是SQL Server专家,但。。。加上上面所有的字段长度,我得到了
    4046
    (我可能犯了一些错误-现在还太早,我还在喝第一杯咖啡……)。现在来看:

    nchar[(n)] 固定长度的Unicode字符串数据。n定义字符串长度,必须是1到4000之间的值。存储大小是n字节的两倍。当排序规则代码页使用双字节字符时,存储大小仍为n字节。根据字符串的不同,n字节的存储大小可以小于为n指定的值。nchar的ISO同义词是national charnational char

    请注意,存储每个字符需要两个字节。做
    2*4046
    我们有
    8092
    字节行长度!还要注意,
    nchar
    是固定长度,我假设在创建条目/行时分配该长度,因此它会生成您看到的错误,告诉您该行太长。我希望它至少在您创建表时警告您

    解决
  • 规范化更多:将表格一分为二,例如,如果您以后需要每个员工的家庭和工作地址,可以使用
    employeeaddress
    表格

  • 使用可变或动态长度的
    nvarchar
    。存储仍然是每个字符2字节,但仅用于插入的数据(未预先分配)。如果尝试将所有字段填充到其最大长度,则会达到相同的限制


  • 对于nchar值,每个字符使用了两个字节,因此您应该将字符数乘以2以获得总行大小。

    对于nchar值,每个字符使用了两个字节,因此您应该将字符数乘以2以获得总行大小。

    最后我得到了解决方案。我在分析阶段,所以我不能在规范化表中更改

    在阅读了下面的链接后,我理解了这个问题。所以我只是用
    nvarchar
    数据类型重新创建了一个“Employee”表,因为我只有一个选项

    感谢@urban给出正确的方向,因此我接受他的回答


    我终于找到了解决办法。我在分析阶段,所以我不能在规范化表中更改

    在阅读了下面的链接后,我理解了这个问题。所以我只是用
    nvarchar
    数据类型重新创建了一个“Employee”表,因为我只有一个选项

    感谢@urban给出正确的方向,因此我接受他的回答


    我不是SQL Server专家,但您是否可以规范化您的架构并将一些列移出上表?这将增加可供您使用的最大行数。其中许多字段的大小似乎太大(例如,ssn为99个字符)或类型错误(日期和时间)。我不是SQL Server专家,但您是否可以规范化架构并将一些列移出上表?这将增加可供您使用的最大行数。其中许多字段的大小似乎太大(例如,ssn为99个字符)或类型错误(日期和时间)。谢谢,亲爱的,但正如我所说,这是要分析的应用程序数据库,我在这一阶段不会规范化或添加/更改数据库结构。我会检查你的解决方案。错过了那部分。。。咖啡相关问题:)nvarchar的运气如何?谢谢,亲爱的,但正如我所说的,这是应用程序数据库
    INSERT INTO employee
    (
    wcsuid,lastupdatedate,updatedatetime,locationid,isactive,CreatedDate,sdate,identityemployeeno,employeeid,firstname,lastname,ssn,dob,gender,address,addressLine2,city,state,zipcode,isinternationaladdress,telephone,cellphone,IdentityJobTitleNo,manager,hiredate,terminationdate,username,
    userpassword,userpassword_required,employeestanding,identityroleid,loggedin,punchedin,punchedinTime,punchedinDate,contactname,contactaddress,contactaddressLine2,contactcity,contactstate,contactzipcode,isinternationalcontactaddress,contactphone,contactcellphone,relationtoemployee,worksoncommission,overrideitemcommission) 
    VALUES 
    (
    '2015121512201580210002','','20151215122015802','','','20151215','','4','','Ajayendra','Raghuvanshi','','19782707','M','','','','','','','0792762063','','','','00000000','00000000','ajayendra',
    'SdYHcqaxf1gMjjSkjmpUiw==','N','','','','','','','','','','','','','','','','','N','N')