嘗試開啟 Team 專案集合時,可能發生 TF246017 的錯誤

本文將介紹當您嘗試開啟 Team 專案集合時,發生 TF246017 的錯誤時,可能的解決方案。

當您嘗試由 Team Foundation Server 管理主控台(筆者遇到這問題的環境為 TFS 2010)開啟 Team 專案集合時,可能發生 TFS240617 無法連接到資料庫的錯誤訊息。

擷取1

此時若您切換至【TFS > 應用程式層】可以看到許多[SQL 存取遭拒] 的錯誤訊息(如下圖)。

擷取2

另外若您使用 Visual Studio 2010 的 Team 總管來嘗試連接 TFS ,可能會看到如下圖 TF31001 的錯誤訊息。

螢幕截圖00022

筆者嘗試透過 SSMS 連接 TFS 所使用的 SQL Server 發現可以正常連接,但 TFS 所 Tfs_Configuration 資料庫狀態雖是正常,但嘗試在物件總管中點選該資料庫,會無法展開底下的各項資料庫物件。若您的 TFS 所使用的資料庫名稱不是 Tfs_Configuration,您可以從【Team Foundation Server 管理主控台 > 應用程式層 > 資料程式層摘要】來查看連線字串的 Initial Catalog。

筆者以下列的步驟嘗試排除 TFS 無法連接 SQL Server 的問題:

  • 開啟檔案總管檢查 SQL Server 的 mdf 與 ldf 檔案所在的磁碟是否空間不足。
  • 由上一步驟發現 Tfs_Configuration 資料庫所在的磁碟機空間已經被用完,仔細一看原來磁碟空間都被 ldf 吃光,筆者利用下列 T-SQL 敘述來清除並縮小交易記錄檔的檔案大小。
   1: --先將資料庫復原模式設定為簡單復原模式
   2: USE [master]
   3: GO
   4: ALTER DATABASE [Tfs_Configuration] SET RECOVERY SIMPLE WITH NO_WAIT
   5: GO
   6: --利用DBCC SHRINKFILE來壓縮交易記錄檔
   7: USE [Tfs_Configuration]
   8: GO
   9:  
  10: --查詢要交易記錄檔的名稱
  11: DECLARE @db_file nvarchar(4000)
  12: SELECT @db_file = name
  13: FROM sys.database_files
  14: WHERE type = 1
  15:  
  16: SELECT @db_file
  17: DBCC SHRINKFILE(@db_file)
  18: GO
  19:  
  20: --將資料庫復原模式設定為完整復原模式
  21: USE [master]
  22: GO
  23: ALTER DATABASE [Tfs_Configuration] SET RECOVERY FULL WITH NO_WAIT
  24: GO
  25:  
  26: --查看交易記錄檔大小
  27: DBCC SQLPERF(LOGSPACE);
  28: GO
  • 由於之前磁碟空間不足造成 Tfs_Configuration 無法存取,筆者以卸離/附加的方式來重新掛載該資料庫。

經過上述步驟後,重新以 Visual Studio 2010 的 Team 總管或 Team Foundation Server 管理主控台連接 TFS就可以順利連接了。

 

【參考資料】