SQL Server Management Studio でオブジェクトのスクリプトを作成する
このチュートリアルでは、SQL Server Management Studio (SSMS) で見つかるさまざまなオブジェクトの Transact-SQL (T-SQL) スクリプトを生成する方法を説明します。 次のオブジェクトのスクリプトを作成する方法の例を示します。
- クエリ、GUI 内でアクションを実行する場合
- データベース、2 種類の方法 (スクリプト化とスクリプトの生成)
- テーブル
- ストアド プロシージャ
- 拡張イベント
オブジェクト エクスプローラー内のオブジェクトをスクリプトするには、そのオブジェクトを右クリックし、 [Script Object As](オブジェクトをスクリプト化) オプションを選択します。 このチュートリアルでは、そのプロセスについて説明します。
前提条件
このチュートリアルを実行するには、SQL Server Management Studio、SQL Server を実行しているサーバーへのアクセス、および AdventureWorks データベースが必要です。
- SQL Server Management Studio をインストールします。
- SQL Server 2017 Developer Edition をインストールします。
- AdventureWorks サンプル データベースをダウンロードします。
SSMS でデータベースを復元する手順については、データベースの復元に関するページを参照してください。
GUI からクエリのスクリプトを作成する
SSMS の GUI を使用してタスクを完了するたびに、タスクに対して関連する T-SQL コードを生成することができます。 次の例では、データベースのバックアップを作成するときと、トランザクション ログを圧縮するときについて、その方法を示します。 GUI を使って行うすべてのアクションに、同じ手順を適用できます。
データベースをバックアップするときの T-SQL をスクリプト化する
SQL Server を実行しているサーバーに接続します。
[データベース] ノードを展開します。
[AdventureWorks2022] データベースを右クリックし、>[タスク]>[バックアップ] の順に選択します。
好みの方法でバックアップを構成します。 このチュートリアルでは、すべてを既定値のままにしています。 ただし、ウィンドウで行った変更もすべて、スクリプトに反映されます。
[スクリプト]>[スクリプト操作を新規クエリ ウィンドウに保存] を選択します。
クエリ ウィンドウに生成された T-SQL を確認します。
[実行] を選択して、T-SQL を使用してデータベースをバックアップするクエリを実行します。
トランザクション ログを圧縮するときの T-SQL をスクリプト化する
[AdventureWorks2022] データベースを右クリックし、>[タスク]>[圧縮]>[ファイル] の順に選択します。
[ファイルの種類] ドロップダウン リスト ボックスから [ログ] を選択します。
[スクリプト] 、 [スクリプト操作をクリップボードに保存] の順に選択します。
[新しいクエリ] ウィンドウを開いて貼り付けます (ウィンドウで右クリックします。次に、[貼り付け] を選択します)。
[実行] を選択してクエリを実行し、トランザクション ログを圧縮します。
データベースをスクリプト化する
次のセクションでは、 [スクリプト化] オプションと [スクリプトの生成] オプションを使って、データベースのスクリプトを作成する方法を説明します。 [スクリプト化] オプションを使うと、データベースとその構成オプションが再作成されます。 [スクリプトの生成] オプションを使用して、スキーマとデータの両方のスクリプトを作成することができます。 このセクションでは、新しいデータベースを作成します。 [スクリプト化] オプションを使用して AdventureWorks2022a を作成します。 [スクリプトの生成] オプションを使用して AdventureWorks2022b を作成します。
[スクリプト] オプションを使用してデータベースのスクリプトを作成する
SQL Server を実行しているサーバーに接続します。
[データベース] ノードを展開します。
[AdventureWorks2022] データベースを右クリックし、>[データベースをスクリプト化]>[新規作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。
ウィンドウでデータベース作成クエリを確認します。
このオプションを選択すると、データベース構成オプションのみがスクリプト化されます。
キーボードで Ctrl キーを押しながら F キーを押して [検索] ダイアログ ボックスを開きます。 ↓キーを押して [置換] オプションを開きます。 上部の [検索] 行に「AdventureWorks2022」と入力し、下部の [置換] 行に「AdventureWorks2022a」と入力します。
AdventureWorks2022 のインスタンスをすべて AdventureWorks2022a に置き換えるには、 [すべて置換] を選択します。
[実行] を選択してクエリを実行し、AdventureWorks2022a データベースを新しく作成します。
[スクリプトの生成] オプションを使用してデータベースのスクリプトを作成する
SQL Server を実行しているサーバーに接続します。
[データベース] ノードを展開します。
[AdventureWorks2022] を右クリックし、>[タスク]>[スクリプトの生成] の順に選択します。
[説明] ページが開きます。 [次へ] を選択し、 [オブジェクトの選択] ページを開きます。 データベース全体、またはデータベース内の特定のオブジェクトを選択することができます。 [データベース全体とすべてのデータベース オブジェクトのスクリプトを作成] を選択します。
[次へ] を選択し、 [スクリプト作成オプションの設定] ページを開きます。 ここでは、スクリプトの保存場所とその他の詳細オプションを構成できます。
a. [新しいクエリ ウィンドウに保存] を選択します。
b. [詳細設定] を選択し、次のオプションを設定します。
- [統計のスクリプトを作成] を [統計のスクリプトを作成] に設定します。
- [スクリプトを作成するデータの種類] を [スキーマのみ] に設定します。
- [インデックスのスクリプトを作成] を [True] に設定します
注意
[スクリプトを作成するデータの種類] オプションに [スキーマとデータ] を選択すると、データベースのデータをスクリプト化することができます。 ただし、この設定は大規模なデータベースには適していません。 SSMS で割り当て可能なメモリよりも多くのメモリが割り当てられる可能性があります。 小さなデータベースの場合、この制限は問題ありません。 大規模なデータベースのデータを移動する場合は、インポートとエクスポート ウィザードを使用します。
[OK] を選択し、 [次へ] を選択します。
[概要] ページで [次へ] を選択します。 もう一度 [次へ] を選択して、スクリプトを [新しいクエリ] ウィンドウに生成します。
キーボードで [検索] ダイアログ ボックスを開きます (Ctrl + F キー)。 ↓キーを押して [置換] オプションを開きます。 上の [検索] 行に「AdventureWorks2022」と入力します。 下の [置換] 行に「AdventureWorks2022b」と入力します。
AdventureWorks2022 のインスタンスをすべて AdventureWorks2022b に置き換えるには、 [すべて置換] を選択します。
[実行] を選択してクエリを実行し、AdventureWorks2022b データベースを新しく作成します。
テーブルをスクリプト化する
このセクションでは、データベースからテーブルをスクリプト化する方法について説明します。 このオプションを使用すると、テーブルの作成またはテーブルの削除と作成ができます。 このオプションを使用して、テーブルの変更に関連する T-SQL をスクリプト化することもできます。 たとえば、テーブルへの挿入、テーブルの更新などの変更です。 このセクションでは、テーブルを削除して、再作成します。
SQL Server を実行しているサーバーに接続します。
[データベース] ノードを展開します。
AdventureWorks2022 データベースのノードを展開します。
[テーブル] ノードを展開します。
dbo.ErrorLog を右クリックし、>[テーブルをスクリプト化]>[削除および作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。
[実行] を選択してクエリを実行します。 この操作で Errorlog テーブルが削除され、再作成されます。
注意
AdventureWorks2022
データベースの Errorlog テーブルは、既定では空です。 そのため、テーブルを削除してもデータは失われません。 ただし、データが含まれるテーブルで次の手順を実行すると、データが失われます。
ストアド プロシージャのスクリプトを作成する
このセクションでは、ストアド プロシージャを削除して作成する方法について説明します。
SQL Server を実行しているサーバーに接続します。
[データベース] ノードを展開します。
[プログラミング] ノードを展開します。
[ストアド プロシージャ] ノードを展開します。
ストアド プロシージャ dbo.uspGetBillOfMaterials を右クリックし、>[ストアド プロシージャをスクリプト化]>[削除および作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。
拡張イベントのスクリプトを作成する
このセクションでは、拡張イベントのスクリプトを作成する方法について説明します。
SQL Server を実行しているサーバーに接続します。
[管理] ノードを展開します。
[拡張イベント] ノードを展開します。
[セッション] ノードを展開します。
対象の拡張セッションを右クリックして、[セッションをスクリプト化]、[新規作成]、[新しいクエリ エディター ウィンドウ] の順に選択します。
[新しいクエリ エディター ウィンドウ] でセッションの新しい名前を system_health から system_health2 に変更します。 [実行] を選択してクエリを実行します。
オブジェクト エクスプローラーで [セッション] を右クリックします。 [更新] を選択すると、新しい拡張イベント セッションが表示されます。 セッションの横にある緑色のアイコンは、セッションが実行中であることを示します。 赤色のアイコンは、セッションが停止していることを示します。
注意
セッションを右クリックして [開始] を選択すると、セッションを開始できます。 ただし、これは既に実行されている system_health セッションのコピーなので、この手順はスキップすることができます。 拡張したイベント セッションのコピーを削除するには、右クリックして [削除] を選択します。
次のステップ
SSMS に慣れ親しむには、実践的な経験を積むのが最も効果的です。 以下の "チュートリアル" と "操作方法" に関する記事は、SSMS 内で使用できるさまざまな機能を使用するのに役立ちます。 以下の記事では、SSMS のコンポーネントを管理する方法と、頻繁に使用する機能にアクセスする方法が説明されています。