Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 TSQL帮助(SQL Server 2005)_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

Sql server TSQL帮助(SQL Server 2005)

Sql server TSQL帮助(SQL Server 2005),sql-server,sql-server-2005,tsql,Sql Server,Sql Server 2005,Tsql,几天来,我一直在使用一个相当复杂的SQL语句,并且大部分都工作正常 最后一部分我遇到了问题,我想知道是否有人可以解释一下这个问题,因为我不知道为什么它不起作用: INSERT INTO ExistingClientsAccounts_IMPORT SELECT DISTINCT cca.AccountID, cca.SKBranch, cca.SKAccount, cca.SKName, cca.SKBase, cca.SyncStatus, cca.SKCCY, cca.ClientTyp

几天来,我一直在使用一个相当复杂的SQL语句,并且大部分都工作正常

最后一部分我遇到了问题,我想知道是否有人可以解释一下这个问题,因为我不知道为什么它不起作用:

INSERT INTO ExistingClientsAccounts_IMPORT
SELECT DISTINCT 
cca.AccountID, cca.SKBranch, cca.SKAccount, cca.SKName, cca.SKBase, 
cca.SyncStatus, cca.SKCCY, cca.ClientType, cca.GFCID, cca.GFPID, cca.SyncInput, 
cca.SyncUpdate, cca.LastUpdatedBy, cca.Deleted, cca.Branch_Account, cca.AccountTypeID
FROM         ClientsAccounts AS cca 
INNER JOIN
(SELECT DISTINCT ClientAccount, SKAccount, SKDesc, 
    SKBase, SKBranch, ClientType, SKStatus, GFCID, 
    GFPID, Account_Open_Date, Account_Update
FROM          ClientsAccounts_IMPORT) AS ccai 
ON cca.Branch_Account = ccai.ClientAccount
下表定义如下:

CREATE TABLE [dbo].[ExistingClientsAccounts_IMPORT](
    [AccountID] [int] NOT NULL,
    [SKBranch] [varchar](2) NOT NULL,
    [SKAccount] [varchar](12) NOT NULL,
    [SKName] [varchar](255) NULL,
    [SKBase] [varchar](16) NULL,
    [SyncStatus] [varchar](50) NULL,
    [SKCCY] [varchar](5) NULL,
    [ClientType] [varchar](50) NULL,
    [GFCID] [varchar](10) NULL,
    [GFPID] [varchar](10) NULL,
    [SyncInput] [smalldatetime] NULL,
    [SyncUpdate] [smalldatetime] NULL,
    [LastUpdatedBy] [varchar](50) NOT NULL,
    [Deleted] [tinyint] NOT NULL,
    [Branch_Account] [varchar](16) NOT NULL,
    [AccountTypeID] [int] NOT NULL
) ON [PRIMARY]


CREATE TABLE [dbo].[ClientsAccounts_IMPORT](
    [NEWClientIndex] [bigint] NOT NULL,
    [ClientGroup] [varchar](255) NOT NULL,
    [ClientAccount] [varchar](255) NOT NULL,
    [SKAccount] [varchar](255) NOT NULL,
    [SKDesc] [varchar](255) NOT NULL,
    [SKBase] [varchar](10) NULL,
    [SKBranch] [varchar](2) NOT NULL,
    [ClientType] [varchar](255) NOT NULL,
    [SKStatus] [varchar](255) NOT NULL,
    [GFCID] [varchar](255) NULL,
    [GFPID] [varchar](255) NULL,
    [Account_Open_Date] [smalldatetime] NULL,
    [Account_Update] [smalldatetime] NULL,
    [SKType] [varchar](255) NOT NULL
) ON [PRIMARY]
我收到的错误消息是: Msg 8152,第16级,第14状态,第1行 字符串或二进制数据将被截断。
语句已终止。

错误是因为您试图将数据插入现有ClientsAccounts\u导入中的列,其中列大小小于试图插入的数据长度

e、 g。 SKAccount列在
现有客户端计数\u导入
表中为VARCHAR(12),但在
客户端计数\u导入
表中为VARCHAR(255)

因此,如果
ClientsAccounts\u IMPORT
包含该字段长度超过12个字符的任何行,您将得到该错误,因为obv。例如,100个字符将无法放入12个字符的字段中


您需要确保要插入的表中的所有列都足够大-确保每个列定义与源表匹配。

检查字段定义。你可以看到一些比原来的小。现在对旧数据运行一个查询-您将发现使用了一些较大的字段,因此在不丢失数据的情况下插入是不可能的


示例:SKAccount-长度从255到12。

您的
选择
列列表的第三列意味着
现有客户端计数\u导入。SKAccount
客户端计数填充。SKAccount
-但是,源最多255个字符,而目标的容量为12。如果有任何数据不合适,您将收到此消息


我没有浏览所有其他列。

您试图插入的值大于为列指定的最大长度。使用探查器检查传递到此查询的数据,并根据所有列的允许长度验证数据长度

这两个表的公共列的列长度明显不匹配。
ClientsAccounts\u IMPORT.SKBase
是10,而在另一个表中是16。

我确实意识到错误消息告诉我的是什么,但我不明白的是什么可能被截断了hm-你对复杂的定义是另一个对琐碎的定义。不复杂。这是一个大得多的查询中的一个独立部分,但为了简单起见,我现在只发布了引起我问题的部分。