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