2

我有一個非常奇怪的情況,我試圖從網絡上研究答案無濟於事。我正在使用SQL Server 2008 R2。在存儲過程的截斷表上發生錯誤

我創建了一個存儲過程,其中包含其他T-SQL語句中的TRUNCATE TABLE語句。

當這從SQL Server Management Studio運行時,存儲過程運行時沒有錯誤。

當從Windows中運行窗體應用程序(寫在VB.Net與.NET框架4),我收到錯誤

找不到對象tbl_Test1,因爲它不存在,或者你做 沒有權限

到數據庫的連接是否正確設置應用程序中,什麼是更奇怪的是,我在完全相同的方式創建的其他存儲過程,用自己的TRUNCATE TABLE報表和這些仍然沒有錯誤地運行。

存儲過程對User_Role有執行權限,其中調用的應用程序正在以其身份登錄。

tbl_Test1是否存在。

我已經嘗試了幾件事情,從這樣做起,對這種情況變得更加困惑。

  1. 如果我把一個Select * from tbl_Test1TRUNCATE之前,則該存儲過程的工作。

  2. 因爲我稍後返回一個選擇,所以我寧願這個不存在。因此,我重新編碼並在TRUNCATE聲明之前執行了select @Count = count(*) from tbl_Test1,並且此錯誤與上述相同的錯誤聲明tbl_Test1不存在或沒有權限。

我完全喪失了爲什麼會出現這種情況。我有幾個其他的存儲過程在它們中截斷了語句,這些存儲過程的創建方式與這個過程完全相同,並且在應用程序中調用這些過程時工作正常。

任何人都可以幫助或解決我的問題。

提前感謝

+3

當我們不允許看到代碼時,我們在調試時非常糟糕。 –

+1

存儲過程中的所有代碼都是TRUNCATE TABLE tbl_Test1以及其他SQL語句。沒有真正加入代碼的原因是我不認爲它增加了任何問題。問題是SP在Management Studio中完美工作,但不能從VB.NET應用程序中完成。如果在我的SP中沒有Truncate語句,那麼它工作正常(包括刪除和選擇和更新)。我沒有看到爲什麼Truncate在Management Studio中無法正常工作。如果您認爲這將有助於解決此問題,我很樂意發佈代碼。 – Adam

回答