はじめに
(ver.12)
TFSでもBugspots試せそうなのでやってみたい...
(ver.11)
作業項目の追加/変更/削除
(ver.10)
TFS 2015のデータベースファイル(mdf)を減少させたい...
(ver.9)
TFS 2015にSonarQubeをお試し導入
※導入はせずに参考サイトを調べるまで...
(ver.8)
ver.4の問題が発生して、今回実際に対応が必要になった...
※このタイミングで再度サイトも確認したので追記
(ver.7)
TFS 2015をデタッチ/再アタッチした後、SonarQubeが動かない
(ver.6)
TFS 2015をデタッチ/再アタッチした後、コレクション管理ページにアクセスない
(ver.5)
サーバ名やIPアドレス変更に伴って、TFSが動かない...
(ver.4)
急にデータベースファイル(mdf,ldf)サイズの日次増加が数十GB単位になる...
またしても枯渇の危機(ToT)
(ver.3)
ついに別ドライブデータ移動が待ったなしとなる...
事前準備をきちんとした結果、無事別ドライブデータ移動に成功!!
(ver.2)
HDD容量を日次監視していて、まだ大丈夫だろうと油断していたら
いきなり0に(ToT)
※原因分析これからだけど、今は対策考えないと
(ver.1)
ずっと動かしていると、Cドライブの容量がやばくなってきた...
動かなくなる前に対策取っておかないと(ToT)
ver.12
sqlcmd -S WS12R2ja-TFS\TFS -E -i bugspot.sql -o result.log
DECLARE @T_FILE table (
ID int identity(1, 1),
ItemId int,
[PATH] nvarchar(4000),
[FILENAME] nvarchar(4000),
COUNT_CHECKIN int,
DATE_CREATE] datetime,
DATE_LAST_UPDATE datetime,
ALIVE_MINUTES money
)
DECLARE @T_CHECKIN table (
ID int identity(1, 1),
FileId int,
ItemId int,
DATE_CHECKIN datetime,
DATE_CREATE_AS_SAMEFILE datetime,
TIMING float(53)
)
INSERT INTO @T_FILE
SELECT
tbl_VersionedItem.ItemId,
REPLACE(REPLACE(tbl_VersionedItem.ParentPath, '>', '_'), '\', '/') AS [PATH],
REPLACE(REPLACE(tbl_VersionedItem.ChildItem, '>', '_'), '\', '') AS [FILENAME],
T_FILE.[COUNT] AS COUNT_CHECKIN,
T_FILE.MIN_DATE_UPDATE,
T_FILE.MAX_DATE_UPDATE,
DATEDIFF(D, T_FILE.MIN_DATE_UPDATE, T_FILE.MAX_DATE_UPDATE)
FROM
tbl_VersionedItem
INNER JOIN (
SELECT
tbl_File.ItemId,
COUNT(*) AS [COUNT],
MIN(tbl_File.CreationDate) AS MIN_DATE_UPDATE,
MAX(tbl_File.CreationDate) AS MAX_DATE_UPDATE
FROM
tbl_File
GROUP BY
tbl_File.ItemId
) AS T_FILE ON tbl_VersionedItem.ItemId = T_FILE.ItemId
INSERT INTO @T_CHECKIN
SELECT
tbl_File.FileId,
tbl_File.ItemId,
tbl_File.CreationDate,
A_FILE.DATE_CREATE] AS DATE_CREATE_AS_SAMEFILE,
null
FROM
tbl_File
LEFT OUTER JOIN @T_FILE AS A_FILE ON tbl_File.ItemId = A_FILE.ItemId
UPDATE @T_CHECKIN
SET DATE_CREATE_AS_SAMEFILE = ISNULL(MIN_CHECKIN.MIN_DATE, NULL)
FROM
@T_CHECKIN AS A_CHECKIN
LEFT OUTER JOIN (
SELECT
tbl_File.ItemId,
MIN(tbl_File.CreationDate) AS MIN_DATE
FROM
tbl_File
GROUP BY
tbl_File.ItemId
) AS MIN_CHECKIN ON A_CHECKIN.ItemId = MIN_CHECKIN.ItemId
UPDATE @T_CHECKIN
SET TIMING = CONVERT(float(53), DATEDIFF(D, DATE_CREATE_AS_SAMEFILE, DATE_CHECKIN)) / CONVERT(float(53), DATEDIFF(D, DATE_CREATE_AS_SAMEFILE, GETDATE()))
WHERE
DATEDIFF(D, DATE_CREATE_AS_SAMEFILE, GETDATE()) <> 0
SELECT
A_FILE.[PATH],
A_FILE.[FILENAME],
T_SCORE.SCORE
FROM
@T_FILE AS A_FILE
INNER JOIN (
SELECT
A_CHECKIN.ItemId AS ItemId,
SUM(1/(1+EXP(-12*TIMING+12))) AS SCORE
FROM
@T_CHECKIN AS A_CHECKIN
GROUP BY
A_CHECKIN.ItemId
) AS T_SCORE ON A_FILE.ItemId = T_SCORE.ItemId
ORDER BY
T_SCORE.SCORE desc
参考サイト
◆グーグルのバグ予測アルゴリズムを実装したツール「bugspots」について
https://qiita.com/okappy/items/e5fc62f9026e0d73c3e9
◆TFS版バグ予測ツール
https://qiita.com/1987yama3/items/5d72114e3061cbda1239
◆bugspots3 0.1
https://pypi.org/project/bugspots3/0.1/
ver.11
やりたいこと
・作業項目の追加/編集/削除
・
> cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer"
REM 実行できるコマンド(機能)を把握 ※下記のexportができる=編集可能
> witadmin /?
exportagileprocessconfig
exportcategories
exportcommonprocessconfig
exportgloballist
exportglobalworkflow
exportlinktype
exportprocessconfig
exportwitd
REM 作業項目のリストを取得
> witadmin listwitd /collection:http://localhost:8080/tfs/Development /p:ScrumProject
タスク
バグ
コード レビュー要求
コード レビュー応答
エピック
機能
フィードバック要求
フィードバック応答
懸案事項
プロダクト バックログ項目
共有ステップ
共有パラメーター
テスト ケース
テスト計画
テスト スイート
REM 編集したい作業項目をエクスポート
> witadmin exportwitd /collection:http://localhost:8080/tfs/Development /p:ScrumProject /n:"プロダクト バックログ項目" /e:utf-8 > C:\work\Backlog.xml
REM ~何らかの編集~
REM 作業項目のインポート(/vオプションで検査⇒成功すると下記の実行結果になる)
> witadmin importwitd /collection:http://localhost:8080/tfs/Development /p:ScrumProject /f:C:\work\Backlog.xml /e:utf-8 /v
作業項目の種類は有効です。
REM 作業項目のインポート
> witadmin importwitd /collection:http://localhost:8080/tfs/Development /p:ScrumProject /f:C:\work\Backlog.xml /e:utf-8
作業項目の種類のインポートが完了しました。
参考サイト
◆TFSの作業項目をプロジェクトに合わせてカスタマイズする(前編)
https://codezine.jp/article/detail/3965?mode=print
◆TFSの作業項目をプロジェクトに合わせてカスタマイズする(後編)
https://codezine.jp/article/detail/4092?mode=print
◆フィールドの規則を使ってTFSの作業項目を高度に作りこむ
https://codezine.jp/article/detail/4346?mode=print
※作業項目をカスタマイズする際に必要な情報がたくさん...貴重!!
◆Team Foundation Server(TFS) で管理しているファイルの検索方法
https://qiita.com/mgotodev/items/4e46af37c41173f36fae
◆Team Foundation Server で作業項目(WIT)の新規追加
https://qiita.com/ruirui1968/items/1cd9728b51f2c6eee187
※/v オプションを指定することで、インポートはせず検査だけ実施⇒「作業項目の種類は有効です」
◆TFSで作業項目タイプ(WIT)を削除する
https://qiita.com/ash2z/items/5d3da4a0185d6e437e0d
◆TFSの作業項目のカスタマイズは簡単にできます
https://matsukawar.hatenablog.com/entry/20151219/1450537700
◆Azure Boards と Azure DevOps の数値フィールドでクエリを実行する
https://learn.microsoft.com/ja-jp/azure/devops/boards/queries/query-numeric?view=azure-devops
◆作業項目の種類をバックログとボードに追加する
https://learn.microsoft.com/ja-jp/azure/devops/reference/add-wits-to-backlogs-and-boards?view=azure-devops
◆ポートフォリオ バックログ レベルを追加する
https://learn.microsoft.com/ja-jp/azure/devops/reference/add-portfolio-backlogs?view=azure-devops
◆プロセス構成 XML 要素のリファレンス
https://learn.microsoft.com/ja-jp/azure/devops/reference/xml/process-configuration-xml-element?view=azure-devops-2022
ver.10
REM Test Attachment Cleanerコマンド操作(プレビュー)
"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools\tcmpt.exe" attachmentCleanup /collection:http://localhost:8080/tfs/Development /teamProject:ScrumProject /settingsFile:largeAttachment.xml /mode:preview
"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools\tcmpt.exe" attachmentCleanup /collection:http://localhost:8080/tfs/Development /teamProject:ScrumProject /settingsFile:deleteSettings.xml /mode:preview
REM TFSで管理しているファイル検索
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" vc dir /recursive /collection:http://localhost:8080/tfs/Development $/*
<!-- Scenario : Remove large files -->
<DeletionCriteria>
<TestRun />
<Attachment>
<SizeInMB GreaterThan="10" />
</Attachment>
</DeletionCriteria>
<!-- Scenario : Remove specific files early -->
<DeletionCriteria>
<TestRun >
<AgeInDays OlderThan="30" />
</TestRun>
<Attachment>
<SizeInMB GreaterThan="10" />
<Extensions>
<Include value="iTrace"/>
<Include value="dll"/>
<Include value="pdb"/>
<Include value="wmv"/>
</Extensions>
</Attachment>
<LinkedBugs>
<Exclude state="Active" />
<Exclude state="Resolved" />
</LinkedBugs>
</DeletionCriteria>
-- tbl_Contentの増加量確認
select DATEPART(yyyy, CreationDate) as [year],
DATEPART(mm, CreationDate) as [month],
count(*) as [count],
SUM(DATALENGTH(Content)) / 1048576.0 as [Size in Mb],
(SUM(DATALENGTH(Content)) / 1048576.0) / count(*) as [Average Size]
from tbl_Content
group by DATEPART(yyyy, CreationDate),
DATEPART(mm, CreationDate)
order by DATEPART(yyyy, CreationDate),
DATEPART(mm, CreationDate)
-- DB別のファイルサイズ容量
SELECT DB_NAME(database_id) AS DBName, (size/128) SizeInMB
FROM sys.master_files
WHERE type=0 AND substring(db_name(database_id),1,4)='Tfs_' AND DB_NAME(database_id)<>'Tfs_Configuration'
ORDER BY size desc
-- ファイルサイズが大きいTOP1000
select top 1000
a.ResourceId
,a.FileLength
,a.CompressedLength
,b.FileName
,b.FileId
,c.ChildItem
,c.FullPath
from [dbo].[tbl_FileMetadata] as a
left join [dbo].[tbl_FileReference] as b on a.ResourceId=b.ResourceId
left join [dbo].[tbl_Version] as c on b.FileId=c.FileId
order by a.CompressedLength desc
-- テーブル別の利用容量
USE Tfs_Development
CREATE TABLE #t
( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18),
data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18))
GO
INSERT #t
EXEC [sys].[sp_MSforeachtable] 'EXEC sp_spaceused "?"'
GO
SELECT
name as TableName,
Rows,
ROUND(CAST(REPLACE(reserved, ' KB', '') as float) / 1024,2) as ReservedMB,
ROUND(CAST(REPLACE(data, ' KB', '') as float) / 1024,2) as DataMB,
ROUND(CAST(REPLACE(index_size, ' KB', '') as float) / 1024,2) as IndexMB,
ROUND(CAST(REPLACE(unused, ' KB', '') as float) / 1024,2) as UnusedMB
FROM #t
ORDER BY CAST(REPLACE(reserved, ' KB','') as float) DESC
GO
Drop table #t
参考サイト
◆【TFS】 Team Foundation Server に巨大ファイルをチェックインしてしまったときの対処
https://tech.d-itlab.co.jp/programming/352/
※これで一度削除したコレクションをdestroyしてみるか...
◆Microsoft Visual Studio Team Foundation Server 2015 Power Tools
https://marketplace.visualstudio.com/items?itemName=TFSPowerToolsTeam.MicrosoftVisualStudioTeamFoundationServer2015Power
※後でダウンロード&お試し導入
◆Attempting to Reduce size of TFS database using Test Attachment Cleaner
https://tatvog.wordpress.com/2015/11/06/116/
※後でこのコマンドを実施してデータ圧縮できることを...
◆Guide to reduce TFS database growth using the Test Attachment Cleaner
https://hermit.no/guide-to-reduce-tfs-database-growth-using-the-test-attachment-cleaner/
★ここの調査用コマンドをTFS2015用に...
◆TFS2015 tbl_Content increase
https://stackoverflow.com/questions/44158019/tfs2015-tbl-content-increase
◆SQL Serverのデータファイルを圧縮する
https://sql-oracle.com/sqlserver/?p=481
◆【SQL Server】データベースの容量を圧縮する
https://sql-oracle.com/sqlserver/?p=476
◆SQLサーバー データベースの圧縮
http://momochiro11.blog111.fc2.com/blog-entry-88.html
◆これでスッキリ!! SQLServerダイエット!
https://tech.sanwasystem.com/entry/2015/08/31/225815
※DBに負荷をかけているクエリを探す方法が書かれている
◆え!?86億行がここまで!SQLServerデータ圧縮の実力
https://tech.sanwasystem.com/entry/2015/06/26/112456
◆SQL Server で tempdb データベースを圧縮する方法
https://support.microsoft.com/ja-jp/topic/sql-server-%E3%81%A7-tempdb-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E5%9C%A7%E7%B8%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-ea0a95c2-eff8-7075-9ee2-2ee42226ca1c
◆ファイルを圧縮する方法 (SQL Server Management Studio)
https://learn.microsoft.com/ja-jp/previous-versions/sql/sql-server-2008-r2/ms190757(v=sql.105)
◆データベースの圧縮
https://learn.microsoft.com/ja-jp/sql/relational-databases/databases/shrink-a-database?view=sql-server-2016
◆SUSDB.mdf が肥大化したときの対処方法について
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/046985af-ee5a-47f3-a642-ac3e41f30608/susdbmdf?forum=jpsccmwsus
ver.09
参考サイト
★SonarQube導入(6.7.2)調査
◆Releases ? SonarSource/sonarqube ? GitHub
https://github.com/SonarSource/sonarqube/releases
①SonarQubeインストール
□JREインストール
※jre-8u151-windows-x64.exe
□SonarQubeインストール
https://www.sonarqube.org/downloads/
※sonarqube-6.7.2.zip
◆Installing SonarQUBE on windows and SQL Server
https://www.codewrecks.com/post/old/2015/10/installing-sonarqube-on-windows-and-sql-server/
◆WindowsにPostgreSQL対応のSonarQubeをインストールする方法
https://qiita.com/5zm/items/c8b0119348803812462f
◆SonarQube のセットアップ手順
http://mtomtankfeint.blogspot.com/2016/08/sonarqube.html
◆TFS2015のビルドでSonarQube分析を実行:その1
https://black-techmemo.net/tfs/tfs2015/1313/
◆TFS2015のビルドでSonarQube分析を実行:その2
https://black-techmemo.net/tfs/tfs2015/1314/
①SQL Server 2014 構成マネージャー(Sql Server Configuration Manager)設定
▽[SQL Server ネットワークの構成]-[TFS のプロトコル]を選択
[TCP/IP]のプロパティを開く
▽[IPアドレス]タブを選択して下記を設定
・IPAⅡの設定
TCP ポート :1433
TCP 動的ポート:空
②SQL Serverへログインするユーザー作成(SQLServer認証ユーザー)
▽SQL Server 2014 Management Studioを起動
▽[サーバーへの接続]ウィンドウで[接続]を押下
▽左メニューのオブジェクトエクスプローラーの[セキュリティ]-[ログイン]を右クリックして[新しいログイン]を押下
▽[ログイン - 新規作成]ウィンドウで下記を設定
・[ページの選択]-[全般]
ログイン名:sonar
※SQL Server認証を選択
※パスワード:Admin1234
※下記設定
パスワード ポリシーを適用する:チェック
パスワードの期限を適用する :チェック外す
③SQL Serverのデータベース生成
▽SQL Server 2014 Management Studioを起動
▽[サーバーへの接続]ウィンドウで[接続]を押下
▽左メニューのオブジェクトエクスプローラーの[データベース]を右クリックして[新しいデータベース]を押下
▽[新しいデータベース]ウィンドウで下記を設定
・[ページの選択]-[全般]
データベース名:Sonar
所有者 :sonar
・[ページの選択]-[オプション]
照合順序:SQL_Latin1_General_CP1_CS_AS
▽[OK]を押下
④SQL Serverの認証方式変更
▽SQL Server 2014 Management Studioを起動
▽[サーバーへの接続]ウィンドウで[接続]を押下
▽左メニューのオブジェクトエクスプローラーのトップアイコンを右クリックして[プロパティ]を押下
▽[サーバーのプロパティ - ***]ウィンドウで下記を設定
・[ページの選択]-[セキュリティ]
サーバー認証:SQL Server 認証モードとWindows 認証モード
▽[OK]を押下
⑤SQL Serverの再起動
▽Sql Server Configuration Managerを起動
▽左メニューの[SQL Server のサービス]を選択
▽右プロパティの[SQL Server (TFS)]を右クリックして[再起動]を選択
※参考サイト
◆SQL Server > エラー:18456 でログインできない場合
https://qiita.com/sugasaki/items/a95c2495085e32851707
⑥コマンド プロンプトでの各種確認
・データベース接続
sqlcmd -S WS12R2ja-TFS -U sonar -P Admin1234
※参考サイト
◆コマンドプロンプトでSQL Serverを使う
https://qiita.com/chihiro/items/75b12aca631f79be28b2
・データベース情報確認
1> SELECT name, collation_name FROM sys.databases WHERE name = N'Sonar';
2> GO
⑦JREインストール
⑧
ver.08
参考サイト
◆HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法
https://social.technet.microsoft.com/Forums/ja-JP/e3696294-cbb4-430a-88dd-6a2ec02fc213/howto-management-studio
※今回はここにあるサイトの対応を実施して、トランザクションログファイルのサイズを小さくすることで対応!!
TFSの定期バックアップ(この場合、バックアップ先はmdfサイズ分のHDD容量が必要。最初、トランザクションログファイルもいるかと思って手詰りになりそうだった...)を実施しておくことは必要だと感じた。
◆SQL Server データベースのバックアップと復元 - SQL Server 2014 | Microsoft Docs
https://docs.microsoft.com/ja-jp/previous-versions/sql/2014/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-2014
※msdnのドキュメントはここから対象箇所に参照
◆SQLServer: ◆オンラインバックアップ
http://mtgsqlserver.blogspot.com/2013/02/blog-post_20.html#39
ver.07
参考サイト
◆Installing SonarQUBE on windows and SQL Server
https://www.codewrecks.com/post/old/2015/10/installing-sonarqube-on-windows-and-sql-server/
◆SonarQube: Installation Walkthrough for Windows and SQL Server Express
https://improveandrepeat.com/2017/11/sonarqube-installation-walkthrough-for-windows-and-sql-server-express/
※新規構築だからこの辺の設定は必要そうだ...試してみよう。
◆SQL Serverに外部から接続する備忘録
https://sara.jiin.com/other/sql.html
◆SQL Server 構成マネージャーで表示される IP アドレスの追加方法
https://blog.engineer-memo.com/2012/04/21/sql-server-%e6%a7%8b%e6%88%90%e3%83%9e%e3%83%8d%e3%83%bc%e3%82%b8%e3%83%a3%e3%83%bc%e3%81%a7%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b-ip-%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%ae%e8%bf%bd/
※ここをベースに設定値に違いがないかを確認!!
◆SQL Server の名前付きインスタンスのポート解決について
https://blog.engineer-memo.com/2010/02/21/sql-server-%E3%81%AE%E5%90%8D%E5%89%8D%E4%BB%98%E3%81%8D%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E8%A7%A3%E6%B1%BA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
※これはこれで内容を理解しておかないと...
◆Microsoft Azure - SonarQube と TFS による技術的負債の管理
https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2015/november/microsoft-azure-manage-technical-debt-with-sonarqube-and-tfs
◆Continuous Delivery with TFS: Track Technical Debt with SonarQube
https://pleasereleaseme.net/continuous-delivery-with-tfs-track-technical-debt-with-sonarqube/
ver.06
参考サイト
◆TFS 2015をデタッチ/再アタッチした後、コレクション管理ページにアクセスできません
https://bugfix.plus/info-323222.htm
◆Can't access collection admin page after detach / reattach
https://social.msdn.microsoft.com/Forums/silverlight/en-US/a31160d4-0bca-4d94-8444-6cd0f4f01da4/cant-access-collection-admin-page-after-detach-reattach?forum=tfsgeneral
※ここで解説されているように、SQL Serverのデータを更新する必要がありそう...
◆VS402375: Can't find the process associated with team project
https://social.msdn.microsoft.com/Forums/en-US/27675214-5212-460d-8789-f732255e6e54/vs402375-cant-find-the-process-associated-with-team-project?forum=tfsprocess
◆コマンドラインでSQL Serverを使う最低限のメモ
https://qiita.com/zaburo/items/6edf7c05c5d4f5e039eb
◆コマンドラインから SQL Server を制御
https://fyts.hatenadiary.org/entry/20070706/sql
◆【初級編④】SQL Server Management Studio の基本的な操作方法(2/2)
https://kaya-soft.com/sqlserver2008-toranomaki/beginner/query-editor/
※多分SQL Server Management Studioで操作した方が良さげ...
◆TFS Power Toolsに含まれるPowerShellコマンドレット
https://kkamegawa.hatenablog.jp/category/TFS?page=1326034800
※全然関係ないが、見つけたのでリマインダー
ver.05
参考サイト
◆TFS/VSTSのビルドタスク作成:拡張機能インストーラーの作成/展開
https://black-techmemo.net/tfs/tfs2017/1353/
◆DB のアタッチ
http://surferonwww.info/BlogEngine/post/2010/09/13/ACL-setting-and-database-attaching-in-SQL-Server.aspx
◆SQL Server アンインストールの手順(SSS for Windows)
https://www.yukisoft.co.jp/faq/sqlserver_uninstall_sss.pdf
◆SQLServerを完全アンインストールする手順
https://www.hiskip.com/pg-notes/database/sqlserver/1601.html
◆SQLServerを完全アンインストールする
https://qiita.com/sakkuntyo/items/96fd79ff5102aa3439f9
ver.04
一旦、やることを整理
※作業に影響が出ないよう、深夜にオンラインでコマンド実行できないと厳しい...
①下記サイトを査読
◆【SQLServer】知ってた?トランザクションログバックアップが、ログ削除の方法です。
http://plus-sys.jugem.jp/?eid=391
※仕組みの解説がされている...まずはここから
◆SQL Server データベースのバックアップと復元
https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-2014
★☆★ここのサイトを一通り読んでポイントやキーワードを理解
※復旧モデル(単純/完全)、
◆SQL Server のログが小さくならない場合の対処法
https://fyts.hatenadiary.org/entry/20080318/log
★☆★以下、ポイント
※方法1: 復旧モデル「単純」を利用
※方法2: ログのバックアップを利用して圧縮
※下記サイトを理解してコマンド発行して状況を把握
◆トランザクション ログ (SQL Server)
https://docs.microsoft.com/ja-jp/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-2014
②下記を把握した上で、スクリプトを実施する/しない判断
◆PowerShellでSQL Serverの古いログ関係を削除する
https://kkamegawa.hatenablog.jp/entry/2014/12/25/053334
※コマンドチェック&お試し
③①で仕組みを把握した上で、下記を実施
◆HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法
https://blogs.msdn.microsoft.com/jpsql/2017/09/29/howto-management-studio-ldf/
※サイズの圧縮系(試す価値はあるかもだが、きちんと読まないと...)
以下、トラブルシューティングねた
◆1日に1回再起動するシステムでトランザクションログファイルが肥大化した(ファイル管理トラブル) (1/2)
https://www.atmarkit.co.jp/ait/articles/1709/19/news001.html
◆数年間安定稼働しているシステムで、システムデータベースが肥大化した(ファイル管理トラブル) (1/2)
https://www.atmarkit.co.jp/ait/articles/1709/11/news002.html
ver.03
■TFSファイル キャッシュ フォルダーのパス変更
⇒ Cドライブにフォルダー(C:\TfsData\ApplicationTier_fileCache)を残しておかないとTFSのサイトにアクセスできない問題があったのですが、下記の対応をすることで容量が増えないようにうまく対応できた。
MKLINK /D C:\TfsData\ApplicationTier\_fileCache E:\TfsData\ApplicationTier\_fileCache
■SQL Server のデータベースファイル(mdf,ldf)を別ドライブに移動
※最終的に、下記操作手順でうまくいった!!HDD枯渇でコレクションが停止できず肝を冷やしましたが...やっぱり、ギリギリまで不要ファイルを削除するのはこういう時に怖い。
▽操作手順めも
▽IIS@TFSのアプリケーションプール停止
※Microsoft Team Foundation Server Appication Pool
※Microsoft Team Foundation Server Message Queue Appication
▽TFS@コレクション停止
▽TFS@コレクションデタッチ ★要時間計測(mdf,ldfサイズ/経過時間)
▽Microsoft SQL Server Management Studio
@対象DBを右クリック-[タスク]-[デタッチ]
※データベースのデタッチ ★要時間計測(mdf,ldfサイズ/経過時間)
▽ファイル移動(ロールバックを想定してファイルコピー)
▽Microsoft SQL Server Management Studio
@データベースを右クリック-[アタッチ]
※データベースのインポート
▽TFS@コレクションアタッチ
※[コレクションのアタッチ]を選択すると自動的に対象データベースが表示される
※[検証]ボタンを押下してチェック
※[アタッチ]を実行 ★要時間計測(mdf,ldfサイズ/経過時間)
▽IIS@TFSのアプリケーションプール開始
▽接続確認 ★表示まで時間かかりそう...
・バックログ関連操作
・Git関連操作
▽各種コマンド調査
REM TFS@サービス停止
REM ※IISのアプリケーションプール/Windowsサービス(は停止対象ない模様)
"C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\TfsServiceControl.exe" quiesce
REM TFS@コレクション停止
REM ※UIでの操作のみの模様...(ToT)
REM TFS@コレクションデタッチ
"C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\TfsConfig.exe" Collection /detach /CollectionName:Development
REM TFS@コレクション削除
"C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\TfsConfig.exe" Collection /delete /CollectionName:Development
REM TFSのサービス起動
"C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\TfsServiceControl.exe" unquiesce
REM ★未検証
REM SQL Serverの停止
net stop MSSQLSERVER
REM robocopyによるバックアップ
robocopy "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA" "E:\TFS_BACKUP" /MIR
REM SQL Serverの開始
net start MSSQLSERVER
ver.02
■ファイル キャッシュ フォルダーのパス変更
※参考サイト①を見るとわかるが、デフォルトがCドライブなので、
[Team Foundation Server 管理コンソール]で別ドライブに設定
(ただ、一部はCドライブ上に存在し続ける模様...git系な気がする)
■使っていないデータ/不要データを探す
※未稼働のシステムデータベースや復旧時に利用したデータベースがあったため、
参考サイト②を参考に以下を実施(これでしばらくはver.3が不要になりそう)
・未稼働のシステムデータベースは、構成マネージャツールを利用して、SQL Serverサービスを全停止&サービス無効化してから、ファイルを移動
・復旧時に利用したデータベースは、Microsoft SQL Server Management Studio経由でデタッチを実施してから、ファイルを移動
ver.01
■SQL Server関連でやれることはないか...
※なぜなら、ほとんどSQL Server内のデータで容量が圧迫している
(gitの不要ブランチ等を削除すると減ったりしないかなぁ...)
⇒ 一旦、SQL Server関連はざっと調べた。後はTFS/git関連で何かヒットしないかなぁ~
■ページファイルのサイズ変更
⇒ 実施済、既に限界が来ている...
参考サイト
バックアップ/リストア関連
◆TFSサーバー移設の失敗談
https://qiita.com/naojin/items/96e4a8a9cd36a5d9a491
◆Team Foundation Serverデータベースの復元方法メモ
https://iyemon018.hatenablog.com/entry/2017/01/10/164548
◆TFSのコレクションのマシンを移動する
https://rksoftware.wordpress.com/2013/06/17/tfsのコレクションのマシンを移動する/
◆TFSコレクションの移動
http://www.meeks.jp/archives/5471
※「TFS 管理コンソールのバックアップ・復元機能は使用せず、バッチでコレクションの停止、デタッチ、バックアップ、アタッチ、開始を行う必要がある。」の記載ばかりだが、TFSのバージョンによらないのかなぁ...
◆SQL Server のデータベースファイル移動(mdf,ldf)と圧縮
https://tksm.org/wp/archives/3455
※きっとこれだ。。。
◆満杯になったトランザクション ログのトラブルシューティング (SQL Server エラー 9002)
https://docs.microsoft.com/ja-jp/sql/relational-databases/logs/troubleshoot-a-full-transaction-log-sql-server-error-9002?view=sql-server-2014
※別のディスクへのログ ファイルの移動系(経験上、最終的にはこれか...)
◆TFS2010から2018への移設
http://sabotenbros.blogspot.com/2019/11/tfs20102018.html?m=0
※デタッチの必要性が書かれているので、失敗したらここにある通りやろう...
◆TFS2013でのバックアップサービスについて
https://social.msdn.microsoft.com/Forums/ja-JP/6e3cc3b5-eef4-408b-b51f-7d5553bcb05c/tfs20131239112398124961248312463124501248312503124691254012499124?forum=vstsja
※「TF401009: TFS サービス アカウント NT AUTHORITY\LOCAL SERVICE はネットワーク共有にアクセスできません。
バックアップ パスにアクセスできるアカウントに変更してください。」
というエラーが出たため、サービス アカウントの変更を実施して対応
◆TFSのスケジュールされたバックアップ/復元を使用してTFS 2015データベースをTFS 2018に復元できませんでした
https://ja.programqa.com/question/50475408/
※TFSConfig.exeを利用して変更している
インストール関連
①Team Foundation Server 2015 Update1 のインストール
https://www.ipentec.com/document/team-foundation-server-2015-update-tfs-2015-update1
◆Team Foundation Server 2015 Update 3 インストール 手順書 ~ SQL Server インストールから チームプロジェクトの作成まで ~
https://www.slideshare.net/masakit/team-foundation-server-2015-update-3-sql-server
◆TFS 2015とTFS 2015 Expressの機能比較
https://kkamegawa.hatenablog.jp/entry/2015/11/24/065902
SQL Server関連
②SQL Server 実践「SQL Server 2016 への移行とアップグレードの実践」
http://www.sqlquality.com/ex2016/UpgradeTo2016_ex/Text/Step04-02.html
◆SQL Server関連、インフラ管理者のためのSQL Server知識
http://www.putise.com/server/sql-server
※一旦見直して勉強
◆TFSにおけるSQL Serverの扱い
https://kkamegawa.hatenablog.jp/entry/20111213/p1
◆SQL Serverトラブルシューティング
https://www.atmarkit.co.jp/ait/series/3394/index.html
※ここのファイル管理トラブル
詳細未確認...必要時に見るためのリマインダー
◆Team Foundation Server(TFS)のデータ保存場所(オフラインバックアップ)
https://tekk.hatenadiary.org/entry/20120401/1333260009
◆SQL Serverの構造を理解する
https://enterprisezine.jp/dbonline/detail/8016
◆SQL Server のログが小さくならない場合の対処法
https://fyts.hatenadiary.org/entry/20080318/log
◆Custom report in TFS Regarding Source Control
https://social.msdn.microsoft.com/Forums/en-US/d02c6fd3-a762-4830-8ec2-63671ed7c9ae/custom-report-in-tfs-regarding-source-control?forum=tfsreporting
TODO&Reminder
◆Delete Files task
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/delete-files?view=tfs-2015
◆TFS拡張機能(VSTS Variable Tasks)
https://marketplace.visualstudio.com/_apis/gallery/publishers/jessehouwing/extensions/jessehouwing-vsts-variable-tasks/1.2.8/package?noPrompt=true