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 データベースが必要です。

SSMS でデータベースを復元する手順については、データベースの復元に関するページを参照してください。

GUI からクエリのスクリプトを作成する

SSMS の GUI を使用してタスクを完了するたびに、タスクに対して関連する T-SQL コードを生成することができます。 次の例では、データベースのバックアップを作成するときと、トランザクション ログを圧縮するときについて、その方法を示します。 GUI を使って行うすべてのアクションに、同じ手順を適用できます。

データベースをバックアップするときの T-SQL をスクリプト化する

  1. SQL Server を実行しているサーバーに接続します。

  2. [データベース] ノードを展開します。

  3. [AdventureWorks2022] データベースを右クリックし、>[タスク]>[バックアップ] の順に選択します。

    Back up a database

  4. 好みの方法でバックアップを構成します。 このチュートリアルでは、すべてを既定値のままにしています。 ただし、ウィンドウで行った変更もすべて、スクリプトに反映されます。

  5. [スクリプト]>[スクリプト操作を新規クエリ ウィンドウに保存] を選択します。

    Script database backup--script action

  6. クエリ ウィンドウに生成された T-SQL を確認します。

    Script database backup--review T-SQL

  7. [実行] を選択して、T-SQL を使用してデータベースをバックアップするクエリを実行します。

トランザクション ログを圧縮するときの T-SQL をスクリプト化する

  1. [AdventureWorks2022] データベースを右クリックし、>[タスク]>[圧縮]>[ファイル] の順に選択します。

    Shrink files

  2. [ファイルの種類] ドロップダウン リスト ボックスから [ログ] を選択します。

    Shrink transaction log

  3. [スクリプト][スクリプト操作をクリップボードに保存] の順に選択します。

    Script to clipboard

  4. [新しいクエリ] ウィンドウを開いて貼り付けます (ウィンドウで右クリックします。次に、[貼り付け] を選択します)。

    Paste script

  5. [実行] を選択してクエリを実行し、トランザクション ログを圧縮します。

データベースをスクリプト化する

次のセクションでは、 [スクリプト化] オプションと [スクリプトの生成] オプションを使って、データベースのスクリプトを作成する方法を説明します。 [スクリプト化] オプションを使うと、データベースとその構成オプションが再作成されます。 [スクリプトの生成] オプションを使用して、スキーマとデータの両方のスクリプトを作成することができます。 このセクションでは、新しいデータベースを作成します。 [スクリプト化] オプションを使用して AdventureWorks2022a を作成します。 [スクリプトの生成] オプションを使用して AdventureWorks2022b を作成します。

[スクリプト] オプションを使用してデータベースのスクリプトを作成する

  1. SQL Server を実行しているサーバーに接続します。

  2. [データベース] ノードを展開します。

  3. [AdventureWorks2022] データベースを右クリックし、>[データベースをスクリプト化]>[新規作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。

    Script database

  4. ウィンドウでデータベース作成クエリを確認します。

    Scripted-out database このオプションを選択すると、データベース構成オプションのみがスクリプト化されます。

  5. キーボードで Ctrl キーを押しながら F キーを押して [検索] ダイアログ ボックスを開きます。 ↓キーを押して [置換] オプションを開きます。 上部の [検索] 行に「AdventureWorks2022」と入力し、下部の [置換] 行に「AdventureWorks2022a」と入力します。

  6. AdventureWorks2022 のインスタンスをすべて AdventureWorks2022a に置き換えるには、 [すべて置換] を選択します。

    Find and replace

  7. [実行] を選択してクエリを実行し、AdventureWorks2022a データベースを新しく作成します。

[スクリプトの生成] オプションを使用してデータベースのスクリプトを作成する

  1. SQL Server を実行しているサーバーに接続します。

  2. [データベース] ノードを展開します。

  3. [AdventureWorks2022] を右クリックし、>[タスク]>[スクリプトの生成] の順に選択します。

    Generate scripts for databases

  4. [説明] ページが開きます。 [次へ] を選択し、 [オブジェクトの選択] ページを開きます。 データベース全体、またはデータベース内の特定のオブジェクトを選択することができます。 [データベース全体とすべてのデータベース オブジェクトのスクリプトを作成] を選択します。

    Generate scripts for objects

  5. [次へ] を選択し、 [スクリプト作成オプションの設定] ページを開きます。 ここでは、スクリプトの保存場所とその他の詳細オプションを構成できます。

    a. [新しいクエリ ウィンドウに保存] を選択します。

    b. [詳細設定] を選択し、次のオプションを設定します。

    • [統計のスクリプトを作成][統計のスクリプトを作成] に設定します。
    • [スクリプトを作成するデータの種類][スキーマのみ] に設定します。
    • [インデックスのスクリプトを作成][True] に設定します

    Script objects

    注意

    [スクリプトを作成するデータの種類] オプションに [スキーマとデータ] を選択すると、データベースのデータをスクリプト化することができます。 ただし、この設定は大規模なデータベースには適していません。 SSMS で割り当て可能なメモリよりも多くのメモリが割り当てられる可能性があります。 小さなデータベースの場合、この制限は問題ありません。 大規模なデータベースのデータを移動する場合は、インポートとエクスポート ウィザードを使用します。

  6. [OK] を選択し、 [次へ] を選択します。

  7. [概要] ページで [次へ] を選択します。 もう一度 [次へ] を選択して、スクリプトを [新しいクエリ] ウィンドウに生成します。

  8. キーボードで [検索] ダイアログ ボックスを開きます (Ctrl + F キー)。 ↓キーを押して [置換] オプションを開きます。 上の [検索] 行に「AdventureWorks2022」と入力します。 下の [置換] 行に「AdventureWorks2022b」と入力します。

  9. AdventureWorks2022 のインスタンスをすべて AdventureWorks2022b に置き換えるには、 [すべて置換] を選択します。

    AdventureWorks 2016

  10. [実行] を選択してクエリを実行し、AdventureWorks2022b データベースを新しく作成します。

テーブルをスクリプト化する

このセクションでは、データベースからテーブルをスクリプト化する方法について説明します。 このオプションを使用すると、テーブルの作成またはテーブルの削除と作成ができます。 このオプションを使用して、テーブルの変更に関連する T-SQL をスクリプト化することもできます。 たとえば、テーブルへの挿入、テーブルの更新などの変更です。 このセクションでは、テーブルを削除して、再作成します。

  1. SQL Server を実行しているサーバーに接続します。

  2. [データベース] ノードを展開します。

  3. AdventureWorks2022 データベースのノードを展開します。

  4. [テーブル] ノードを展開します。

  5. dbo.ErrorLog を右クリックし、>[テーブルをスクリプト化]>[削除および作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。

    Script table

  6. [実行] を選択してクエリを実行します。 この操作で Errorlog テーブルが削除され、再作成されます。

    注意

    AdventureWorks2022 データベースの Errorlog テーブルは、既定では空です。 そのため、テーブルを削除してもデータは失われません。 ただし、データが含まれるテーブルで次の手順を実行すると、データが失われます。

ストアド プロシージャのスクリプトを作成する

このセクションでは、ストアド プロシージャを削除して作成する方法について説明します。

  1. SQL Server を実行しているサーバーに接続します。

  2. [データベース] ノードを展開します。

  3. [プログラミング] ノードを展開します。

  4. [ストアド プロシージャ] ノードを展開します。

  5. ストアド プロシージャ dbo.uspGetBillOfMaterials を右クリックし、>[ストアド プロシージャをスクリプト化]>[削除および作成]>[新しいクエリ エディター ウィンドウ] の順に選択します。

    Script stored procedures

拡張イベントのスクリプトを作成する

このセクションでは、拡張イベントのスクリプトを作成する方法について説明します。

  1. SQL Server を実行しているサーバーに接続します。

  2. [管理] ノードを展開します。

  3. [拡張イベント] ノードを展開します。

  4. [セッション] ノードを展開します。

  5. 対象の拡張セッションを右クリックして、[セッションをスクリプト化][新規作成][新しいクエリ エディター ウィンドウ] の順に選択します。

    Extended New Query Editor Window session

  6. [新しいクエリ エディター ウィンドウ] でセッションの新しい名前を system_health から system_health2 に変更します。 [実行] を選択してクエリを実行します。

  7. オブジェクト エクスプローラー[セッション] を右クリックします。 [更新] を選択すると、新しい拡張イベント セッションが表示されます。 セッションの横にある緑色のアイコンは、セッションが実行中であることを示します。 赤色のアイコンは、セッションが停止していることを示します。

    New extended event session

    注意

    セッションを右クリックして [開始] を選択すると、セッションを開始できます。 ただし、これは既に実行されている system_health セッションのコピーなので、この手順はスキップすることができます。 拡張したイベント セッションのコピーを削除するには、右クリックして [削除] を選択します。

次のステップ

SSMS に慣れ親しむには、実践的な経験を積むのが最も効果的です。 以下の "チュートリアル" と "操作方法" に関する記事は、SSMS 内で使用できるさまざまな機能を使用するのに役立ちます。 以下の記事では、SSMS のコンポーネントを管理する方法と、頻繁に使用する機能にアクセスする方法が説明されています。