none
請問使用SQL 2005 Management Studio 管理SQL 2000時,是不是會有些不相容的問題呢? RRS feed

  • 問題

  • 目前遇到二種情形,一種是同一個store procedure,網頁執行時,會出現逾時,這時候,只要開啟那個store procedure ,複製再貼上,就又正常了。

    另一個是

    Create PROCEDURE [dbo].[P2]
     -- Add the parameters for the stored procedure here
     @Emp_No int,
     @Pho_No int,
     @Des ntext,
     @Type int,
     @Emp_No2 nvarchar(10),
     @Pho_Date Datetime = getdate
    AS
    BEGIN
    另一個P1類似的只少了 @Emp_No2 nvarchar(10)的宣告,P1可以正常執行,而P2卻不行,當把P2的 @Pho_Date Datetime = getdate改成 @Pho_Date Datetime = null即可正常進行.....請問這是因為??

    2007年1月8日 上午 09:58

解答

  • 通常不太可能。

    你的第一種狀況:

    可能導因於 stored procedure 的執行計畫過於老舊,無法反應現有資料的狀態,通常只要下 ALTER PROCEDURE ... WITH RECOMPILE 就可以了,這會強制 SQL Server 重新建立這個陳述式的 statistics,讓它變成對現有資料最佳化的狀態。

    如果不是因為資料變動,或 WITH RECOMPILE 無效時,就要檢查你的網頁的 Command Timeout,或者是修正你的查詢指令。

    第二種狀況我還沒有遇過 ...

    2007年1月8日 上午 11:29
    版主

所有回覆

  • 通常不太可能。

    你的第一種狀況:

    可能導因於 stored procedure 的執行計畫過於老舊,無法反應現有資料的狀態,通常只要下 ALTER PROCEDURE ... WITH RECOMPILE 就可以了,這會強制 SQL Server 重新建立這個陳述式的 statistics,讓它變成對現有資料最佳化的狀態。

    如果不是因為資料變動,或 WITH RECOMPILE 無效時,就要檢查你的網頁的 Command Timeout,或者是修正你的查詢指令。

    第二種狀況我還沒有遇過 ...

    2007年1月8日 上午 11:29
    版主
  • 第一種狀況,很奇怪就是如此,而且是發生二次了,二次發生的時間點大約差個幾天,「至於無法反應現有資料的狀態」不太能了解這個意思,基本上,欄位部份並多大變動,而資料筆數部份也不多。所以我和另一個同事也是覺得怪異~

    第二種狀況~是你有執行過類似宣告,但不會發生錯誤是嗎?

     

    Thx....

    2007年1月11日 上午 09:09
  • 我所謂 "無法反應現有資料的狀態" 是指在大量資料的處理,我也用過 SQL Server 2005 Management Studio 管過 SQL Server 2000,倒還沒看過這個問題。

    第二種狀況是因為,我不會在 stored procedure 做用預設值或 Trigger 就可以做掉的事 ...

    2007年1月11日 下午 01:14
    版主