相关疑难解决方法(0)

字符串或二进制数据将被截断.该语句已终止

我遇到了SQL服务器的一些问题,这是我创建的函数:

ALTER FUNCTION [dbo].[testing1](@price int)
RETURNS @trackingItems1 TABLE (
   item       nvarchar  NULL,
   warehouse   nvarchar NULL,
   price int   NULL
) 
AS
BEGIN
   INSERT INTO @trackingItems1(item, warehouse, price)
   SELECT ta.item, ta.warehouse, ta.price 
   FROM   stock ta
   WHERE  ta.price >= @price; 

   RETURN;
END;
Run Code Online (Sandbox Code Playgroud)

当我编写一个查询以使用该函数时,如下所示它得到错误

字符串或二进制数据将被截断.该语句已终止

怎么解决?谢谢

select * from testing1(2)
Run Code Online (Sandbox Code Playgroud)

这是我创建表格的方式

CREATE TABLE stock(item       nvarchar(50) NULL,
                   warehouse   nvarchar(50) NULL,
                   price int NULL);
Run Code Online (Sandbox Code Playgroud)

sql sql-server

75
推荐指数
5
解决办法
32万
查看次数

SQLException:字符串或二进制数据将被截断

我有一个C#代码,批量处理很多插入语句.在执行这些语句时,我得到"字符串或二进制数据将被截断"错误和事务roledback.

要找出导致这种情况的insert语句,我需要在SQLServer中逐个插入,直到我遇到错误.

有没有聪明的方法来查找哪个语句和哪个字段使用异常处理导致此问题?(SQLEXCEPTION)

c# sql sql-server

58
推荐指数
4
解决办法
11万
查看次数

列与unpivot列表中的其他列的类型冲突

sys.[views]转入键值对,与另一台服务器上的值进行比较,以进行一致性测试.我遇到了一个返回错误的问题.

消息8167,第16级,状态1,第51行

列"type"的类型与UNPIVOT列表中指定的其他列的类型冲突.

查询:

SELECT
sourceUnpivoted.idServer,
sourceUnpivoted.sourceServerName,
sourceUnpivoted.name,
sourceUnpivoted.columnName,
sourceUnpivoted.columnValue
FROM (
SELECT 
CAST('1' AS VARCHAR(255)) AS idServer,
CAST('thisOne' AS VARCHAR(255)) AS sourceServerName,
CAST('theDatabase' AS VARCHAR(255)) AS sourceDatabaseName,
CAST(name AS VARCHAR(255)) AS name,
CAST(object_id AS VARCHAR(255)) AS object_id,
CAST(principal_id AS VARCHAR(255)) AS principal_id,
CAST(schema_id AS VARCHAR(255)) AS schema_id,
CAST(parent_object_id AS VARCHAR(255)) AS parent_object_id,
CAST(type AS VARCHAR(255)) AS type,
CAST(type_desc AS VARCHAR(255)) AS type_desc,
CAST(create_date AS VARCHAR(255)) AS create_date,
CAST(lock_escalation_desc AS VARCHAR(255)) AS lock_escalation_desc
...
FROM noc_test.dbo.stage_sysTables
) AS …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

29
推荐指数
4
解决办法
5万
查看次数

Msg 8152,字符串或二进制数据将被截断

我有这张桌子:

CREATE TABLE Vendors

(
    VendorID            NUMERIC(10)     NOT NULL,
    VendorName          CHAR(50)        NOT NULL,
    VendorAddress       VARCHAR(30)     NULL,
    VendorCityName      VARCHAR(20)     NOT NULL,
    VendorStateName     CHAR(2)         NOT NULL,
    VendorZip           VARCHAR(10)     NULL,
    VendorContactName   CHAR(50)        NOT NULL,
    VendorContactPhone  VARCHAR(12)     NOT NULL,
    VendorContactEmail  VARCHAR(20)     NOT NULL,
    VendorSpecialty     CHAR(20)        NOT NULL

    CONSTRAINT VendorsPK        PRIMARY KEY (VendorID)      
);
Run Code Online (Sandbox Code Playgroud)

这个插入:

INSERT INTO Vendors(VendorID, VendorName, VendorAddress, 
  VendorCityName, VendorStateName, VendorZip, VendorContactName, 
  VendorContactPhone, VendorContactEmail, VendorSpecialty)
VALUES(151330, 'Hyperion', '77 West 66th Street', 'New York', 
  'NY', 10023, 'John Hinks', '212-337-6564', 
  'jhinks@hyperionbooks.com', 'Popular fiction')
Run Code Online (Sandbox Code Playgroud)

为什么这句话会产生8152错误?

sql-server error-handling

14
推荐指数
2
解决办法
7万
查看次数

如何在大查询中找到sql上的"字符串或二进制数据将被截断"错误

我有一个巨大的INSERT INTO TABLE1 (....) SELECT .... FROM TABLE2声明.它给了我错误

"字符串或二进制数据将被截断".

我知道TABLE2中的一个列对于INSERT语句中TABLE1的一列来说更大.

我在每个表中有超过100列.所以很难找出问题所在.有没有更简单的方法来解决这个问题?

sql sql-server

14
推荐指数
3
解决办法
2万
查看次数

对于Nvarchar(Max),我只在TSQL中获得4000个字符?

这是SS 2005.

为什么我只有4000个字符而不是8000个?

它在4000处截断字符串@ SQL1.

ALTER PROCEDURE sp_AlloctionReport(
    @where NVARCHAR(1000),
    @alldate NVARCHAR(200),
    @alldateprevweek NVARCHAR(200))
AS
    DECLARE @SQL1 NVARCHAR(Max)

    SET @SQL1 = 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName, VenuePanels.PanelID, 
    VenueInfo.CompanyName, VenuePanels.ProductCode, VenuePanels.MF, VenueInfo.Address1, 
    VenueInfo.Address2, '' As AllocationDate, '' As AbbreviationCode, VenueInfo.Suburb, VenueInfo.Route, VenueInfo.ContactFirstName, 
    VenueInfo.ContactLastName, VenueInfo.SuitableTime, VenueInfo.OldVenueName, 
    VenueCategories.Category, VenueInfo.Phone, VenuePanels.Location, VenuePanels.Comment, 
    [VenueCategories].[Category] + '' Allocations'' AS ReportHeader, 
    ljs.AbbreviationCode AS PrevWeekCampaign
    FROM (((VenueInfo INNER JOIN VenuePanels ON VenueInfo.VenueID = VenuePanels.VenueID) 
    INNER JOIN VenueCategories ON VenueInfo.CategoryID = VenueCategories.CategoryID) 
    LEFT JOIN (SELECT CampaignProductions.AbbreviationCode, VenuePanels.PanelID, CampaignAllocations.AllocationDate
                    FROM (((VenueInfo …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server nvarchar sql-server-2005

12
推荐指数
1
解决办法
3万
查看次数

字符串或二进制数据将被截断。该语句已终止。系统.Data.SqlClient.SqlException(0x80131904)

字符串或二进制数据将被截断。该语句已终止。

System.Data.SqlClient.SqlException(0x80131904):字符串或二进制数据将被截断

sql-server asp.net-mvc entity-framework

8
推荐指数
1
解决办法
4万
查看次数