SQL Server存储过程INSERT NVARCHAR(MAX)不保存

时间:2017-11-20 20:04:44

标签: sql stored-procedures sql-server-2008-r2

我有一个相当简单的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字符),该列为空。如果我只是运行查询,则显示列值。

1 个答案:

答案 0 :(得分:0)

原来这是一个SQL Server Management Studio问题,似乎没有插入数据。请参阅问题中的更新2.