2012-05-08 68 views
0

我正在從C#代碼調用存儲過程。該SP創建臨時表以存儲一些值。當我從查詢分析器運行這個SP時,一切似乎都沒有問題。但是,當我從C#代碼運行它,臨時表沒有得到創建。從SP調用SP時,臨時表變量似乎不工作#

我正在使用@tableName而不是#tableName。

臨時表僅在存儲過程中被引用。在SP之外不需要它們。 enter image description here 有什麼我錯過了嗎?

+3

是的 - 你錯過了張貼一些代碼! – Polyfun

+0

這是臨時表範圍:http://stackoverflow.com/questions/892351/sql-server-2005-and-temporary-table-scope –

+0

@ShellShock - 請找到我最近的編輯。 –

回答

0

這是因爲用戶憑據您使用在查詢分析器(「山」也許?)很可能不是比C#應用程序所使用的那些相同。

用戶需要訪問系統數據庫tempdb中(讀/寫)如果不是他不能創建(過程中)的時態表時,調用存儲過程。

給訪問tempdb中到C#與您使用相同的用戶在查詢分析器(或任何其他dbadmin用戶)使用或測試你的C#應用​​程序的登錄用戶只是爲了測試它的工作原理。

根據您的評論詢問有關SQL Profiler的聲明。

步驟1:打開SQL事件探查器,並創建一個新的跟蹤。去標籤事件選擇。並取消標記安全審計和會話

enter image description here

第2步:檢查顯示所有事件複選框在右下角,你會得到在網格中的幾個事件。轉到存儲過程和T-SQL並將其標記在下面的屏幕截圖中。

enter image description here

第3步:運行它。

+0

我對查詢分析器以及應用程序都使用相同的用戶sa。 :( –

+0

什麼是由SQL引發的錯誤消息?它是否說臨時表不能被創建?它已經存在? –

+0

它沒有引發任何錯誤,但繼續運行。可以看到對SP的調用,但是沒有任何其他的內部語句 –

0

臨時表將自動刪除會話結束時,你確定它一旦C#代碼完成起來並不只是被刪除? Review the docs瞭解更多信息。