SQL Server 2019 データベースバックアップ&リストアスクリプト(一括バックアップ)
序文 最近、会社のサーバーの有効期限が切れて、データを移行する必要があり、データベースは、グラフィカルインターフェースを通じて、1つのバックアップ時間のコストは非常に大きいので、実行するSQLスクリプトを書くことを考える多くの、面倒なに属しています。
開始
- データベースのシングルバックアップ
- データベース一括バックアップ
- データベースのリストア
- データベースリストアエラーレポート問題ログ
- 概要
1. データベースの単独バックアップ
グラフィカルインターフェースのバックアップはここでは表示されませんが、自分で行うことができます。
USE MASTER
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE BackupDataProc
go
create proc BackupDataProc
@FullName Varchar(200) - the entry (database name)
as
begin
Declare @FileFlag varchar(50)
Set @FileFlag='C:\myfile\database\'+@FullName+'.bak'--which path to backup to (C:\myfile\database\) according to your needs
BackUp DataBase @FullName To Disk=@FileFlag with init--core code
end
exec BackupDataProc xxx
正常に実行されると、以下のように指定したフォルダに.bakファイルが生成されます。
2. データベース一括バックアップ(少し時間がかかりますので、お待ちください。)
USE MASTER
if exists(SELECT * FROM sys.types WHERE name = 'AllDatabasesNameType')
drop type AllDatabasesNameType
go
create type AllDatabasesNameType as table - custom table type for storing database names
(
rowNum int ,
name nvarchar(60),
filename nvarchar(300)
)
go
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BachBackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE BachBackupDataProc
go
create proc BachBackupDataProc
@filePath nvarchar(300) - input, the destination path for the backup
as
begin
Declare @AllDatabasesName as AllDatabasesNameType - the name of the database used to store the system
Declare @i int -- loop variable
insert into @AllDatabasesName(name,filename,rowNum) select name,filename,ROW_NUMBER() over(order by name) as rowNum from sysdatabases where name not in('master','tempdb','model','msdb') --assign value
set @i =1
--loop backup database
while @i <= (select COUNT(*) from @AllDatabasesName)
begin
Declare @FileFlag varchar(500)
Declare @FullName varchar(50)
Select @FullName =name from @AllDatabasesName where rowNum = @i
Set @FileFlag=@filePath+@FullName+'.bak'
BackUp DataBase @FullName To Disk=@FileFlag with init
set @i = @i + 1
end
end
exec BachBackupDataProc 'C:\myfile\database\'
実行結果は、以下の画像のようになります。
3. データベースの復元
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[ReductionProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE ReductionProc
go
create proc ReductionProc
@Name nvarchar(200)--input database name
as
begin
Declare @DiskName nvarchar(500)
Declare @FileLogName nvarchar(100)
Declare @FileFlagData nvarchar(500)
Declare @FileFlagLog nvarchar(500)
Set @FileLogName = @Name + '_log'
Set @DiskName = 'C:\myfile\database\'+@Name+'.bak' ---(source) backup file path
Set @FileFlagData='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@Name+'.mdf' ---(target) Specify the data file path
Set @FileFlagLog='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@FileLogName+'.ldf'---(target) Specify the log file path
RESTORE DATABASE @Name - for the name of the library to be restored
FROM DISK = @DiskName --- the name of the backup file
WITH MOVE @Name TO @FileFlagData, ---specify data file path
MOVE @FileLogName TO @FileFlagLog, --- Specify log file path
STATS = 10, REPLACE
end
go
exec ReductionProc xxx
実行後、ライブラリは復元されます(私はこれら3つのライブラリでテストしています、スクリーンショットはあまり変わらないかもしれません、試してみてください)。
4. データベース復元エラー報告問題ログ
もちろん、リストアの過程で次のような問題に遭遇することもあります。
1. バージョンの違い
2. SQL Sql 論理ファイル 'XXXXXX ' はデータベース 'YYY' の一部ではありません。RESTORE FILELISTONLY を使用して、論理ファイル名をリストしてください。
私はバージョンを試してみました、上位バージョンは下位互換性がありますが、下位バージョンは上位互換性がありません、あなたは解決するためにバージョンを統一することができます(あなたがより良い解決策を持っている場合は、迷惑を歓迎します)。
2つ目の問題は、スクリプト 'MOVE' が論理名しか追えないことで、データベース名ではない論理名を持つデータベースもあるため、置き換える必要があります。
以下は、データベースの論理名を問い合わせるsql文です。
USE MASTER
restore filelistonly from disk='D:\sql201database\Sence.bak'--change the path according to your needs
このように
論理名がデータベース名と一致しない場合は、別途取り出して、以下のように再実装することができます。
USE MASTER -- use MASTER here to avoid having the database to be restored occupied
RESTORE DATABASE Sence -- for the name of the library to be restored
FROM DISK = 'D:\sql201database\Sence.bak' --- backup file name
WITH MOVE 'Sence_Guangxi' TO 'D:\Database\Data\Sence.mdf', --- specify the path to the data file
MOVE 'Sence_Guangxi_log' TO 'D:\Database\Data\Sence_log.ldf', --- Specify the path to the log file
STATS = 10, REPLACE
GO
5. 概要
データは貴重であり、データベースを運用する上でバックアップは必須である。
データは貴重であり、データベースを運用する上でバックアップは必須です。
データは貴重であり、データベースを運用する上でバックアップは必須です。(大事なことは3回言う)。
SQL Server 2019データベースのバックアップと復元スクリプトに関するこの記事では、データベースは、このに導入され、より関連するSQL Server 2019データベースのバックアップと復元スクリプト、データベースは、スクリプト家の前の記事を検索してくださいバッチバックアップのコンテンツをすることができますまたは次の関連記事を閲覧し続け、あなたは将来的に多くのスクリプト家をサポートしている願っています!.
関連
-
Spark SQL 2.4.8 データフレームを操作するための2つの方法
-
SQLインジェクションとその防止、マイベイトの基本的な役割について
-
SQL SERVERのストアドプロシージャを使用した履歴データの移行について
-
DataGrip Formatting SQLの実装(カスタムSqlフォーマット)
-
SQL ServerのSELECT INTOとINSERT INTOのSELECTのケースを説明する
-
Filestreamの簡単な使い方まとめ
-
NavicatはSQL Serverのデータに接続します。エラー08001に対する完璧な解決策 - Named Pipeline Provider
-
SqlServerデータベースリモート接続ケースチュートリアル
-
SQLステートメントにおけるNULL値の扱い方
-
SQL クエリ結果カラムのカンマ区切り文字列へのステッチング法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL Server テーブルパーティション削除の詳細
-
あるユーザーの連続ログイン日数を求めるSQLクエリ
-
SQLSERVER 変数文字列を用いたスプライシング ケース詳細
-
MySQLスレーブ遅延1列外部キーチェックとセルフインクリメントロック
-
SQLの書き方--行ごとの比較
-
SQL文におけるJOINの利用シーンの分析
-
SQLスキルのデータベースは、ケースを整理する
-
SQLServerのエラーです。15404, unable to get information about Windows NT group/user WIN-8IVSNAQS8T7Administrator
-
そのPHP環境の普遍的なパスワードのSQLインジェクションの脆弱性と防御手段
-
データベース毎日練習問題、毎日少しづつ進歩(2)