2010-05-11 68 views
1

我正在使用描述here的工具來清理我們的開發數據庫中的一些垃圾。我遇到了一個奇怪的問題,無法找到原因。sp_helptext輸出被ADO.NET刪除?

對於某些存儲過程,GetProcedureText方法(l:47,Validator.cs)無法返回proc文本,導致程序意外行爲。在調試並進入GetProcedureText時,清楚地看到SqlCommand對ExecuteReader的調用返回的SqlDataReader不包含結果集。問題是爲什麼..

從SSMS運行exec sp_helptext <proc name>確實返回proc文本預期。每次使用相同的procs都會出現問題。下面是展示此問題的過程之一,但問題似乎與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.任何想法?

+0

提示:SQL服務器上的跟蹤顯示正在執行sp_helptext。對受影響的SP沒有特別的權限,我以sa身份進行連接。 – bszom 2010-05-11 11:07:27

回答

1

我遇到了同樣的問題。就我而言,它似乎發生在對象的SQL中發生錯誤時,如重命名的列或表。它會返回一個空的結果,然後所有後續的對象將返回一個空的結果。我必須爲每個數據庫對象創建一個新的SqlConnection才能使其正常工作。不知道底層原因是什麼,但這對我有效......

+0

聽起來很糟糕 - 尤其是當工具的目的是找到那些無效的對象時。感謝您的提示,但我會嘗試一下! – bszom 2010-07-27 11:26:27