【问题标题】:sp_helptext output being dropped by ADO.NET?sp_helptext 输出被 ADO.NET 删除?
【发布时间】:2011-02-18 02:18:35
【问题描述】:

我正在使用here 描述的工具来清理我们开发数据库中的一些垃圾。我遇到了一个奇怪的问题,找不到原因。

对于某些存储过程,GetProcedureText 方法(l:47,Validator.cs)无法返回 proc 文本,导致程序出现意外行为。调试并单步执行 GetProcedureText 时,很明显,调用 SqlCommand 上的 ExecuteReader 返回的 SqlDataReader 不包含结果集。问题是为什么..

从 SSMS 运行 exec sp_helptext <proc name> 确实会按预期返回 proc 文本。每次使用相同的过程都会出现问题。以下是展示此问题的过程之一,尽管问题似乎与 ADO.NET 而不是 SQL Server 相关。

USE [IL_Party_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DeathCause_SelectByDeathCauseCode]
    @deathCauseCode [varchar](15)
AS
SELECT
    death_cause_code,
    description
FROM ilpr_Death_Cause
WHERE
    death_cause_code = @deathCauseCode

我正在使用 SQL Server 2005。有什么想法吗?

【问题讨论】:

  • 仅供参考:SQL 服务器上的跟踪显示正在执行 sp_helptext。受影响的 SP 没有特殊权限,我以 sa 身份连接。

标签: c# sql-server ado.net


【解决方案1】:

我遇到了同样的问题。就我而言,它似乎是在对象的 SQL 中出现错误时发生的,例如重命名的列或表。它将返回一个空结果,然后所有后续对象将返回一个空结果。我必须为每个数据库对象创建一个新的 SqlConnection 才能使其正常工作。不确定根本原因是什么,但这对我有用...

【讨论】:

  • 这听起来很糟糕——尤其是因为该工具的目的是找到那些无效对象。不过感谢您的提示,我会尝试一下!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多