Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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
C# 存储过程的困境。。。插入二进制_C#_.net_Sql_Tsql_Stored Procedures - Fatal编程技术网

C# 存储过程的困境。。。插入二进制

C# 存储过程的困境。。。插入二进制,c#,.net,sql,tsql,stored-procedures,C#,.net,Sql,Tsql,Stored Procedures,好的,我在我的SQL 2008数据库中有这个storedproc(也在2005年工作/过去使用过) 相对简单的是,我在C#中取一个字节数组,并将其放入@Content中,然后给它一个guid和其他参数的字符串,然后我们开始 太好了,它过去很管用。。。但它不再。。。所以呃。。。这个存储过程有什么问题 我在我的C#代码中进行了一步,认为我搞砸了,但它确实添加了参数,并为它们提供了正确的值,那么是什么导致服务器停止正确执行这个storedproc呢 当调用此程序时,它将执行,但数据库中没有任何更改。

好的,我在我的SQL 2008数据库中有这个storedproc(也在2005年工作/过去使用过)

相对简单的是,我在C#中取一个字节数组,并将其放入@Content中,然后给它一个guid和其他参数的字符串,然后我们开始

太好了,它过去很管用。。。但它不再。。。所以呃。。。这个存储过程有什么问题

我在我的C#代码中进行了一步,认为我搞砸了,但它确实添加了参数,并为它们提供了正确的值,那么是什么导致服务器停止正确执行这个storedproc呢

当调用此程序时,它将执行,但数据库中没有任何更改。。。不会将新记录添加到ObjectContent表中


奇怪啊…

您是否运行了探查器来查看发送到SQL Server的确切内容


您是否已尝试使用从探查器获得的值手动执行存储的过程?

是否已运行探查器以准确查看发送到SQL Server的内容

您是否尝试使用从探查器获得的值手动执行存储的进程?

HLGEM

我会给你这个,因为如果我能使用分析器,它会显示实际的修复

本质上,我在我的代码中深入挖掘了一点,发现我实际上是一个平民。。。我的配置文件中有几个连接字符串,但不知怎么的,我选错了一个,所以它工作得很好。。。就在worng db上

我很抱歉浪费了任何人的时间

我现在不觉得自己很笨吗

我也投票支持你。。。天哪,我是个木偶

HLGEM

我会给你这个,因为如果我能使用分析器,它会显示实际的修复

本质上,我在我的代码中深入挖掘了一点,发现我实际上是一个平民。。。我的配置文件中有几个连接字符串,但不知怎么的,我选错了一个,所以它工作得很好。。。就在worng db上

我很抱歉浪费了任何人的时间

我现在不觉得自己很笨吗


我也投票支持你。。。天哪,我是个木偶

如果在SSMS中手动调用此SP,它是否工作?它曾经在SQL2008中工作过吗?或者在您尝试移动到SQL2008时它就停止了吗?必须问一个显而易见的问题:
DATALENGTH(@Content)
是否返回大于5的值?我如何“在SSMS中手动调用它”。。。我之所以问这个问题,是因为我不知道如何设置二进制参数的值。哦,是的。。。datalength最明显地长于5。该字段存储图像内容等内容,因此我在调用C#代码中的进程之前检查了所有这类内容。如果在SSMS中手动调用此SP,是否有效?它曾经在SQL2008中工作过吗?或者在您尝试移动到SQL2008时它就停止了吗?必须问一个显而易见的问题:
DATALENGTH(@Content)
是否返回大于5的值?我如何“在SSMS中手动调用它”。。。我之所以问这个问题,是因为我不知道如何设置二进制参数的值。哦,是的。。。datalength最明显地长于5。所涉及的字段存储图像内容等内容,因此我在调用C#代码中的proc之前检查了所有这类内容。我cat运行profiler,因为所涉及的数据库位于托管服务上,而我不是sys admins角色(如图所示)。在我的本地机器上进行测试似乎效果良好。我在远程机器上没有发现任何错误,它只是退出了。可能是个愚蠢的问题,但是。。。你知道如何在不使用探查器的情况下获取探查器类型信息吗?我之所以运行探查器,是因为所讨论的数据库位于托管服务上,而我不是sys admins角色(它是这么说的)。在我的本地机器上进行测试似乎效果良好。我在远程机器上没有发现任何错误,它只是退出了。可能是个愚蠢的问题,但是。。。有没有想过如何在不使用探查器的情况下获取探查器类型信息?
CREATE PROCEDURE [dbo].[SetBinaryContent]
    @Ref nvarchar(50),
    @Content varbinary(MAX),
    @ObjectID uniqueidentifier
AS
BEGIN

    DELETE ObjectContent WHERE ObjectId = @ObjectID AND Ref = @Ref

    IF DATALENGTH(@Content) > 5
    BEGIN
        INSERT INTO ObjectContent
            (Ref,BinaryContent,ObjectId)
        VALUES
            (@Ref,@Content,@ObjectId)
    END

    UPDATE Objects SET [Status] = 1
    WHERE ID = @ObjectID
END