# SQL Server First Responder Kit

## 概要

SQL Server First Responder Kitは、Microsoft SQL Serverの診断・パフォーマンスチューニング・健全性チェックを行うためのオープンソースのストアドプロシージャ集です。DBA、システム管理者、開発者がSQL Serverの問題を迅速に特定し、解決するためのツールを提供します。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| サーバー健全性チェック | sp_Blitzによるサーバー全体の健全性診断と優先度付き問題リストの出力 |
| クエリパフォーマンス分析 | sp_BlitzCacheによるリソース集約型クエリの特定と分析 |
| リアルタイムパフォーマンス診断 | sp_BlitzFirstによる現在のパフォーマンス問題の即時検出 |
| インデックス分析 | sp_BlitzIndexによる不足・未使用インデックスの分析と推奨 |
| デッドロック分析 | sp_BlitzLockによるデッドロック履歴の解析 |
| 実行中クエリ監視 | sp_BlitzWhoによる現在実行中のクエリの詳細表示 |
| バックアップ分析 | sp_BlitzBackupsによるRPO/RTO推定とバックアップ状況の分析 |
| データベースリストア | sp_DatabaseRestoreによるOla Hallengrenバックアップからの簡易リストア |
| BlitzFirst出力分析 | sp_BlitzAnalysisによるBlitzFirst出力テーブルのクエリと分析 |

## 技術スタック

### コア

- 言語: T-SQL (Transact-SQL)
- データベース: Microsoft SQL Server
- 対応バージョン: SQL Server 2008以降（Microsoftがサポートするすべてのバージョン）
- 対応環境: SQL Server on Windows、SQL Server on Linux、Amazon RDS SQL Server

### 主要ライブラリ

- 外部ライブラリへの依存なし（純粋なT-SQLストアドプロシージャ）
- Ola Hallengrenバックアップスクリプトとの連携（sp_DatabaseRestore）

## ディレクトリ構成

```
SQL-Server-First-Responder-Kit/
├── sp_Blitz.sql                 # サーバー健全性チェック
├── sp_BlitzCache.sql            # クエリキャッシュ分析
├── sp_BlitzFirst.sql            # リアルタイムパフォーマンス診断
├── sp_BlitzIndex.sql            # インデックス分析
├── sp_BlitzLock.sql             # デッドロック分析
├── sp_BlitzWho.sql              # 実行中クエリ監視
├── sp_BlitzBackups.sql          # バックアップ分析
├── sp_BlitzAnalysis.sql         # BlitzFirst出力分析
├── sp_DatabaseRestore.sql       # データベースリストア
├── sp_ineachdb.sql              # 各データベースでの実行ユーティリティ
├── SqlServerVersions.sql        # SQL Serverバージョン情報
├── Install-All-Scripts.sql      # 全スクリプト一括インストール
├── Install-Azure.sql            # Azure SQL DB用インストール
├── Uninstall.sql                # アンインストールスクリプト
├── Deprecated/                  # 非推奨・旧バージョンスクリプト
│   ├── sp_AllNightLog.sql
│   ├── sp_AllNightLog_Setup.sql
│   ├── sp_BlitzInMemoryOLTP.sql
│   ├── sp_BlitzQueryStore.sql
│   └── *_SQL_Server_2005.sql    # SQL Server 2005用スクリプト
├── Documentation/               # ドキュメント
│   ├── sp_Blitz_Checks_by_Priority.md
│   ├── sp_BlitzCache_Checks_by_Priority.md
│   ├── sp_BlitzFirst_Checks_by_Priority.md
│   ├── sp_BlitzIndex_Checks_by_Priority.md
│   └── Development/             # 開発者向けドキュメント
├── .github/                     # GitHub関連ファイル
│   ├── ISSUE_TEMPLATE/
│   └── workflows/
├── README.md                    # プロジェクト説明
├── LICENSE.md                   # MITライセンス
├── CONTRIBUTING.md              # 貢献ガイド
└── CODE_OF_CONDUCT.md           # 行動規範
```

## セットアップ

### 必要条件

- Microsoft SQL Server 2008以降（Microsoftサポート対象バージョン）
- SQL Server Management Studio (SSMS) または Azure Data Studio
- masterデータベースまたは任意のユーザーデータベースへのアクセス権限

### インストール手順

#### SQL Server（オンプレミス/RDS）

1. [最新リリースZIP](https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases)をダウンロード
2. SSMSまたはAzure Data Studioで`Install-All-Scripts.sql`を開く
3. インストール先データベース（推奨: master）に切り替え
4. スクリプトを実行

```sql
-- masterデータベースにインストール（推奨）
USE master;
GO
-- Install-All-Scripts.sql の内容を実行
```

#### Azure SQL DB

```sql
-- Azure SQL DB用インストールスクリプトを使用
-- Install-Azure.sql の内容を実行
```

### アンインストール

```sql
-- Uninstall.sql を実行
```

## 開発

### 基本的な使用方法

```sql
-- サーバー健全性チェック
EXEC sp_Blitz;

-- 最もリソースを消費するクエリを表示
EXEC sp_BlitzCache @SortOrder = 'cpu';

-- リアルタイムパフォーマンス問題の診断
EXEC sp_BlitzFirst;

-- インデックス分析
EXEC sp_BlitzIndex @DatabaseName = 'YourDatabase';

-- 現在実行中のクエリを表示
EXEC sp_BlitzWho;

-- デッドロック分析
EXEC sp_BlitzLock;
```

### テスト

開発用テストは `Documentation/Development/` ディレクトリ内のスクリプトを使用:

- `_TestBed.sql` - テスト環境
- `Test sp_DatabaseRestore.sql` - sp_DatabaseRestoreのテスト

### コーディング規約

- 大文字小文字を区別するデータベースで動作すること
- Unicode オブジェクト名に対応すること
- 異なる日付形式に対応すること
- Microsoftがサポートするすべてのバージョンでコンパイル・実行可能であること

### リリースプロセス

`Documentation/Development/ReleaseProcess.md` を参照

### コントリビューション

1. GitHubでIssueを確認または作成
2. リポジトリをフォーク
3. 変更を実装
4. プルリクエストを作成

詳細は `CONTRIBUTING.md` を参照
