本文將介紹當您嘗試開啟 Team 專案集合時,發生 TF246017 的錯誤時,可能的解決方案。
當您嘗試由 Team Foundation Server 管理主控台(筆者遇到這問題的環境為 TFS 2010)開啟 Team 專案集合時,可能發生 TFS240617 無法連接到資料庫的錯誤訊息。
此時若您切換至【TFS > 應用程式層】可以看到許多[SQL 存取遭拒] 的錯誤訊息(如下圖)。
另外若您使用 Visual Studio 2010 的 Team 總管來嘗試連接 TFS ,可能會看到如下圖 TF31001 的錯誤訊息。
筆者嘗試透過 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_WAIT5: GO
6: --利用DBCC SHRINKFILE來壓縮交易記錄檔
7: USE [Tfs_Configuration]
8: GO
9:
10: --查詢要交易記錄檔的名稱
11: DECLARE @db_file nvarchar(4000)
12: SELECT @db_file = name13: FROM sys.database_files
14: WHERE type = 1
15:
16: SELECT @db_file17: DBCC SHRINKFILE(@db_file)
18: GO
19:
20: --將資料庫復原模式設定為完整復原模式
21: USE [master]
22: GO
23: ALTER DATABASE [Tfs_Configuration] SET RECOVERY FULL WITH NO_WAIT24: GO
25:
26: --查看交易記錄檔大小
27: DBCC SQLPERF(LOGSPACE);28: GO
- 由於之前磁碟空間不足造成 Tfs_Configuration 無法存取,筆者以卸離/附加的方式來重新掛載該資料庫。
經過上述步驟後,重新以 Visual Studio 2010 的 Team 總管或 Team Foundation Server 管理主控台連接 TFS就可以順利連接了。
【參考資料】