我有一个相当简单的SQL Server存储过程,其中包含2个输入参数,名称为nvarchar(100)
,结果为nvarchar(max)
。
存储过程只是插入 - 仅此而已。
INSERT INTO TableX (name, results)
VALUES (@Name, @Results)
结果是序列化为字符串的|
分隔文件。有时,当运行此存储过程时,表中的行只有名称,结果为空。没有SQL错误。这不仅仅是因为结果的长度,因为一些有效的调用比一些最终为空的调用长。我确实发现有些条目包含单引号,因此我删除了单引号,但没有帮助。
有什么想法吗?
这是存储过程:
CREATE PROCEDURE [dbo].[tempdata_SaveMarketStatsToCache]
(@ScreenName NVARCHAR(100),
@Results NVARCHAR(MAX))
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO TempData_MarketStatsCache (MarketStatsKey, Results)
VALUES (@ScreenName, @Results)
END
从.NET调用存储过程。 SQLDbType.NVarchar,长度为-1
更新:我怀疑它是传递的字符串的大小。失败的最小字符串不到250K字符。这对于NVARCHAR(最大)是可以的,但似乎在INSERT期间发生了某些事情。
更新2:原来这是SQL Server Managment Studio的一个问题。我右键单击表并选择编辑200行。这表示对于具有较大结果的行(超过200K字符),该列为空。如果我只是运行查询,则显示列值。
答案 0 :(得分:0)
原来这是一个SQL Server Management Studio问题,似乎没有插入数据。请参阅问题中的更新2.