我遇到了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) 我有一个C#代码,批量处理很多插入语句.在执行这些语句时,我得到"字符串或二进制数据将被截断"错误和事务roledback.
要找出导致这种情况的insert语句,我需要在SQLServer中逐个插入,直到我遇到错误.
有没有聪明的方法来查找哪个语句和哪个字段使用异常处理导致此问题?(SQLEXCEPTION)
我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) 我有这张桌子:
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错误?
我有一个巨大的INSERT INTO TABLE1 (....) SELECT .... FROM TABLE2声明.它给了我错误
"字符串或二进制数据将被截断".
我知道TABLE2中的一个列对于INSERT语句中TABLE1的一列来说更大.
我在每个表中有超过100列.所以很难找出问题所在.有没有更简单的方法来解决这个问题?
这是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) 字符串或二进制数据将被截断。该语句已终止。
System.Data.SqlClient.SqlException(0x80131904):字符串或二进制数据将被截断