2011-03-04 38 views
0

我有一個SQL DTS包在SQL Server 2005數據庫上運行,這個數據庫大部分工作正常。但是,有時它會失敗,我不知道爲什麼。DTS - 完全限定表名稱的問題

該軟件包包含一個SQL任務,該任務創建一堆臨時表,一堆數據轉換,然後在另一個SQL任務結束時刪除第一步中創建的臨時表。

因爲無法找到變換數據任務中引用的某個臨時表,所以儘管表是第一步中創建的臨時表之一,但程序包一次又一次地失敗。

我在間歇性失敗任務和所有其他轉換數據任務之間唯一的差別是目標的表名屬性 - 它是完全限定的,即完全限定。 MyDatabase.dbo.TempTable,而所有其他任務只是將表名指定爲TempTable。我不知道爲什麼這個不同,或者如何解決這個問題。我認爲這是問題,因爲它是唯一一件看起來與這一項任務和所有其他任務不同的東西。

此外,如果我手動執行DTS的第一步以在完全執行程序包之前創建臨時表,它始終有效。

任何人都可以告訴我什麼問題可能在這裏或如何我可以不符合目標表名稱?

感謝

+0

您可以添加包失敗時拋出的錯誤消息的詳細信息嗎? – 2011-03-04 16:47:03

+0

我剛剛關閉了Management Studio(本地時間!),但任務中的一個Transform Data任務失敗,表示「CoreServices.dbo.TempBranchDivision」表無效,或無法找到,我可以不記得確切的措詞。 – TabbyCool 2011-03-04 16:54:27

回答

0

我發現了什麼問題!事實證明,失敗任務的工作流屬性不正確,並且沒有將「創建臨時表」任務指定爲先決條件,因此在創建關聯的目標表之前,現在每次都運行該任務。這並不經常發生,因爲表格是第二個要創建的表格,所以在執行下一個任務之前通常會出現。所有其他任務都有正確的工作流程屬性,但由於某種原因,這個任務已被錯過。

1

你指的這個問題表作爲臨時表,但它看起來好像這是一個實際的表。我猜你打算在包裹中放下桌子?包失敗後,你是否證實表存在?該表的語法是否正確?

另外,你現在在2005年。爲什麼不將軟件包升級到SSIS? SSIS中的日誌提供程序可以記錄的不僅僅是錯誤消息,它可以幫助您瞭解真正的問題。

+0

如果要創建和刪除表inteh進程,那麼通過一切手段使用真正的臨時表而不是臨時表的黑客版本。 – HLGEM 2011-03-04 20:28:21

+0

你是對的,他們不是技術上的臨時表。然而,我並沒有創建這個軟件包,也沒有時間重寫它,因爲這是一個被擱置的項目,所以我的優先權在別處。如果我運行創建表的SQL任務,它會每次創建它們,但是當我運行整個DTS包時,它有時會說找不到一個特定的表。 – TabbyCool 2011-03-07 10:54:30

+0

另外,每個表的create table語法都是相同的,當然,除了表名以外,只有其中一個表的包失敗,其他每個表都成功創建並且每次都填充。 – TabbyCool 2011-03-07 11:00:55

1

由於它間歇性地失敗,它使用完全限定名稱的事實不太可能成爲問題。我懷疑問題在於它上面的某個步驟,因此表格永遠不會被創建。或者這個表是使用select into語句而不是create table創建的?如果是這樣,並且沒有記錄可以選擇,這可能會導致這樣的間歇性問題。

不同的人在不同的用戶賬戶而不是工作下運行軟件包嗎?也許沒有權限在該模式中創建表。

+0

該表使用創建表語句創建 - 如果手動運行包含創建表語句的任務,則每次都成功創建該表,但是當我運行整個程序包時,它有時會說該表不存在。我可以看到的唯一不同之處在於這個表和其他所有的表(其中包含大約20個任務,每個更新不同的表)是這樣一個事實,即這個表使用完全限定的表名,而其他表。 – TabbyCool 2011-03-07 10:56:52

+0

活服務器上的作業每天在服務帳戶下運行。它通常會成功,但是它一次又一次地在這張桌子上失敗。我在我的本地SQL Server上運行它的問題完全相同,它只在一個表上失敗,其他所有的都沒問題。 – TabbyCool 2011-03-07 15:15:00

+0

更奇怪的是,如果每次都不會失敗,那麼我認爲如果完全限定名稱是問題,那麼這種行爲就是我所期望的。它是另一臺服務器的完全限定名嗎?如果是這樣,可能連接到另一臺服務器的時間是週期性的。 – HLGEM 2011-03-07 16:03:40

相關問題