SQL serverはマイクロソフト社が開発したデータベース管理システムです。Windowsに搭載されておりUIデザインに優れているため直観的な操作を実現できます。SQL serverを利用することによってエクセルなどに簡易な操作でデータを移管して出力ができます。
本記事では、SQL serveについてデータ移行方法からメリット・デメリットまで解説します。
SQL serverのデータ移行には3つの方法がある
SQL serverはWindowsユーザーから圧倒的な支持を受けており、他のデータサーバーと比較しても直観的な操作が可能です。
SQL serverのデータ移行は主に以下の3つの方法があります。
- 丸ごとバックアップし移行先で復元
- インポートやエクスポートを使用
- スクリプトを生成し移行先で実行する方法
上記手法は現在の環境に応じて使い分ける必要があります。
それでは、各データ移行方法について解説していきます。
前提条件として下記条件を満たす必要があります。
- データ移行元の移行したいサンプルデータを作成する
- データ移行元にデータ作成スクリプトを作成する
- データ移行先にデータ作成スクリプトを作成する
それでは各工程について解説します。
◆データ移行元の移行したいサンプルデータを作成する
以下はデータベース作成のスクリプトになり、パスは適時変更する必要があります。
下記データについて参照にしてください。
GO
CREATE DATABASE [SampleDatabase]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'SampleDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'SampleDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
また、テーブルスクリプトは以下になります。
USE [SampleDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル1](
[キー] [int] NOT NULL,
[値] [nvarchar](50) NULL,
CONSTRAINT [PK_テーブル1] PRIMARY KEY CLUSTERED
(
[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル2](
[キー] [int] NOT NULL,
[値] [nvarchar](50) NULL,
[備考] [nvarchar](50) NULL,
CONSTRAINT [PK_テーブル2] PRIMARY KEY CLUSTERED
(
[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル3](
[キー] [int] NOT NULL,
[値] [nvarchar](50) NULL,
CONSTRAINT [PK_テーブル3] PRIMARY KEY CLUSTERED
(
[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
また、以下はレコードのスクリプトになります。
USE [SampleDatabase]
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (1, N'1aaa')
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (2, N'1bbb')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (1, N'2aaa', N'2remarks')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (2, N'2bbb', N'2remarks')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (1, N'3aaa')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (2, N'3bbb')
GO
上記データをあらかじめ設定しておくことでデータ移行をスムーズに実施することができます。
【方法1】丸ごとバックアップし移行先で復元
SQL serverのデータ移行方法として「丸ごとバックアップし移行先で復元する手法」があります。
それでははじめに「丸ごとバックアップし移行先で復元する手法」について紹介します。
手順
前提条件として、サーバー内に「SQL Server Management Studio」「SQL Server」の2つのソフトがダウンロードされている必要があります。
主な手順として、下記プロセスが必要になります。
- SQL Server Management Studioを立ち上げる
- オブジェクト エクスプローラー内の対象のデータベースをクリックして「タスク」の「バックアップ」を選択する
- 初期表示されているバックアップパスを削除する
- 追加ボタンをクリックしてパス変更ボタンをクリックする
- バックアップファイルにバックアップするファイル名を任意で指定する
- OKボタンをクリックする
- 移行先のサーバーで SQL Server Management Studio を起動する
- オブジェクト エクスプローラー内で移行先のデータベースをクリックし、「タスク」「復元」「データベース」を選択する
- 「全般」が選択されていることを確認し、右の「ソース」から「デバイス」を選択、右にある参照ボタンをクリックする
- 追加ボタンをクリックして、移行対象のファイルを選択する
- 「既存のデータベースを上書きする」「接続先データベースへの既存の接続を閉じる」を選択してOKボタンをクリックする
上記プロセスで、SQL serverのデータ移行が可能です。
メリット・デメリット
丸ごとバックアップし移行先で復元する方法のメリットとして、サーバー内に「SQL Server Management Studio」「SQL Server」がある場合、他の手法と比較してスムーズに移行できます。
また、テーブルレイアウトの自動同期が可能であるメリットも存在します。
デメリットとして、過去バージョンへの移行が出来ない点が挙げられるでしょう。
過去バージョンへのデータ移行する必要がない場合、丸ごとバックアップし移行先で復元する手法は他のデータ移行方法と比較しても効率的です。
【方法2】インポートやエクスポートを使用
次に、インポートやエクスポートを使用してSQL serverのデータを移行する方法について紹介します。前提条件として、SQL Server 認証、または Windows 認証のいずれかを構築する必要があります。
手順
主な手順として、下記プロセスが必要になります。
- スタートメニューから「データのインポートおよびエクスポート」を選択
- 次へをクリックする
- 移行元のデータベースを選択する
- 移行先データベースの接続設定を実施する
- 「1つ以上のテーブルまたはビューからデータをコピーする」をチェックして次へをクリックする
- すぐに実行するにチェックを入れて次へ進む
- 「完了」をクリックしてデータ移行を開始する
メリット・デメリット
インポートやエクスポートを使用する方法のメリットとして、過去バージョンへの移行ができる点が挙げられます。デメリットとして、サーバー間のネットワーク接続が必須であったり、Windows認証が必要であったりする点が挙げられます。
過去バージョンへの移行をしない場合には基本的にこの手法は使わない場合が多いでしょう。
【方法3】スクリプトを生成し移行先で実行する方法
最後に、SQL serverのデータ移行方法として「スクリプトを生成し移行先で実行する方法」があります。ここでは「スクリプトを生成し移行先で実行する方法」について紹介します。
手順
主な手順として、下記プロセスが必要になります。
- 移行元で SQL Server Management Studio を起動する
- 対象のサーバーにログインする
- 対象データベースをクリックして「タスク」「スクリプトの生成」を選択する
- 次へをクリックする
- 移行するテーブルを指定する
- 「ファイル」「クリップボード」「ウィンドウに表示」のいずれかを選択して、 「詳細設定」ボタンをクリックする
- 「スクリプトを生成するデータの種類」から「データのみ」を選択する
- 次へをクリックして確定する
- SQL を移行先で実行する
メリット・デメリット
スクリプトを生成し移行先で実行する方法のメリットとして、サーバー間のネットワーク接続が不要な点、過去バージョンへの移行が可能な点があります。Windows認証も不要です。
一方で、デメリットとして移行した場合にデータサイズが大きくなる傾向がある点が挙げられます。
スクリプトを生成し移行先で実行する方法では、スムーズなデータ移行が可能です。しかし、データ容量を削減したい方は他の方法を推奨します。
まとめ
本記事では、SQL serverのデータ移行の方法として代表的な3つの手法を紹介しました。それぞれ、自社の環境に合ったデータ移行方法を選択する必要があるため注意が必要です。
自社環境に合ったデータ移行方法を知っておくことで、スムーズにデータを移行しましょう。