https://github.com/maremare/dbbackuprestore
Tool to perform a full backup of a SQL Server database and restore it to a new location. SQL Server データベースの完全バックアップ、および新しい場所への復元を行うツールです。
https://github.com/maremare/dbbackuprestore
csharp net6 net60 sqlserver tool
Last synced: 6 months ago
JSON representation
Tool to perform a full backup of a SQL Server database and restore it to a new location. SQL Server データベースの完全バックアップ、および新しい場所への復元を行うツールです。
- Host: GitHub
- URL: https://github.com/maremare/dbbackuprestore
- Owner: MareMare
- License: mit
- Created: 2022-09-10T07:53:15.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-08T19:27:03.000Z (6 months ago)
- Last Synced: 2025-04-13T20:46:04.572Z (6 months ago)
- Topics: csharp, net6, net60, sqlserver, tool
- Language: C#
- Homepage:
- Size: 85.9 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# DbBackupRestore
SQL Server データベースの完全バックアップ、および新しい場所への復元を行うツールです。
## データベースの完全バックアップ
[構成ファイル](#構成ファイル) に定義された各データベースの完全バックアップをバックアップファイルとして作成します。
* 実行例
```ps1
.\BackupSqlDatabase.exe
```
* 実行されるSQL例
```sql
BACKUP DATABASE @databaseName
TO DISK = @backupFilePath WITH NOFORMAT
, NAME = @description
, INIT
, SKIP
, NOREWIND
, NOUNLOAD
, STATS = 10;
```## データベースの新しい場所への復元
[構成ファイル](#構成ファイル) に定義された各データベースをバックアップファイルより定義された場所へ復元します。
* 実行例
```ps1
.\RestoreSqlDatabase.exe
```
* 実行されるSQL例
```sql
RESTORE FILELISTONLY FROM DISK = @backupFilePath;ALTER DATABASE @databaseName SET OFFLINE WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE @databaseName
FROM DISK = @backupFilePath WITH REPLACE
, NOUNLOAD
, STATS = 5
, MOVE N'{logicalName1}' TO N'{moveToFilePath1}'
, MOVE N'{logicalName2}' TO N'{moveToFilePath2}';ALTER DATABASE @databaseName SET ONLINE;
```## バックアップ先と復元先フォルダのアクセス権について
バックアップ先と復元先フォルダには SQL Server に対してアクセス許可を与える必要があります。両ツールを実行するとそれぞれ対象となるフォルダ対して `NT Service\MSSQL$インスタンス名` にフルコントロールのアクセス権を付与します。
[構成ファイル](#構成ファイル) の 'SqlServerAccount' 設定値が `MSSQL$SQLEXPRESS` であれば `NT Service\MSSQL$SQLEXPRESS` にフルコントロールを付与します。
## 構成ファイル
データベースの完全バックアップ、およびおよび新しい場所への復元の両ツールで同一の構成ファイルを使用します。
```json
// appsettings.json
{
// ...
"SqlDatabaseOptions": {
"ConnectionString": "Data Source=localhost;Integrated Security=True",
"SqlServerAccount": "MSSQL$SQLEXPRESS",
"BackupDirectory": "C:\\DB\\BACKUP",
"RestoreDirectory": "C:\\DB\\RESTORE",
"ArchiveDirectory": "\\\\fileserver\\share\\backup",
"CommandTimeoutSeconds": 60,
"Databases": [
{ "Name": "DB1" },
{ "Name": "DB2" },
{ "Name": "DB3" }
]
},
// ...
}
```appsettings.json の完全な例:
```json
{
"SqlDatabaseOptions": {
"ConnectionString": "Data Source=localhost;Integrated Security=True",
"SqlServerAccount": "MSSQL$SQLEXPRESS",
"BackupDirectory": "C:\\DB\\BACKUP",
"RestoreDirectory": "C:\\DB\\RESTORE",
"ArchiveDirectory": "\\\\fileserver\\share\\backup",
"CommandTimeoutSeconds": 60,
"Databases": [
{ "Name": "DB1" },
{ "Name": "DB2" },
{ "Name": "DB3" }
]
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
```|要素名|説明|設定例|
|--|--|--|
|ConnectionString|接続文字列|`Data Source=localhost;Integrated Security=True`|
|SqlServerAccount|SQL Server サービスアカウント|`MSSQL$SQLEXPRESS`|
|BackupDirectory|`*.bak` の格納先フォルダ|`C:\\DB\\BACKUP`
ローカルフォルダのみ|
|RestoreDirectory|`*.bak` の復元先フォルダ|`C:\\DB\\RESTORE`
ローカルフォルダのみ
要アクセス権|
|ArchiveDirectory|`*.zip` の格納先フォルダ|`\\\\fileserver\\share\\backup`|
|CommandTimeoutSeconds|コマンドタイムアウト秒|`60`
既定値は`60`秒|
|Databases|データベース設定の配列|
|Databases:Name|データベース名|`DB1`|