適用対象:Azure SQL データベース
Azure SQL Database は、Microsoft Cloud (Azure) のサービスとしてのリレーショナル データベース (DBaaS) です。 このチュートリアルでは、 Visual Studio Code 用 の Azure portal と MSSQL 拡張機能を使用して、次の操作を行う方法について説明します。
- Visual Studio Code でデータベースに接続する
- Visual Studio Code を使用してテーブルを作成する
- BCP を使用してデータを一括で読み込む
- Visual Studio Code を使用してデータのクエリを実行する
注
このチュートリアルでは、Azure SQL Database を使用しています。 エラスティック プールでプールされたデータベース、または SQL Managed Instance を使用することもできます。 SQL Managed Instance への接続については、次の SQL Managed Instance クイック スタートを参照してください。クイック スタート: Azure SQL Managed Instance に接続するように Azure VM を構成 し 、クイック スタート: オンプレミスから Azure SQL Managed Instance へのポイント対サイト接続を構成します。
[前提条件]
このチュートリアルを完了するには、以下がインストールされていることを確認します。
- Visual Studio Code と Visual Studio Code 用の MSSQL 拡張機能
- bcp ユーティリティ と sqlcmd ユーティリティ
- Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
- Azure SQL Database をまだ作成していない場合は、「 クイック スタート: 単一データベースの作成 - Azure SQL Database」を参照してください。 ご利用のプランで Azure SQL Database を無料でデプロイするためのオプションをお探しください。
Azure portal にサインインする
Azure portal にサインインする
サーバーレベルの IP ファイアウォール規則を作成する
Azure SQL Database では、サーバーレベルで IP ファイアウォールが作成されます。 このファイアウォールにより、外部のアプリケーションやツールは、ファイアウォール規則でその IP がファイアウォールの通過を許可されていない限り、サーバーおよびサーバー上のすべてのデータベースに接続できなくなります。 データベースに外部から接続できるようにするには、まず、IP アドレス (または IP アドレス範囲) に対する IP ファイアウォール規則を追加する必要があります。 以下の手順に従って、サーバーレベルの IP ファイアウォール規則を作成します。
Important
Azure SQL Database の通信は、ポート 1433 上で行われます。 企業ネットワーク内からこのサービスに接続しようとしている場合は、ポート 1433 経由の送信トラフィックがネットワークのファイアウォールで許可されていない可能性があります。 その場合、管理者がポート 1433 を開かない限り、データベースに接続できません。
デプロイが完了したら、Azure portal メニューから [SQL データベース] を選択するか、または任意のページから [SQL データベース] を検索して選択します。
[SQL データベース] ページで [yourDatabase] を選択します。 データベースの概要ページが開き、完全修飾 [サーバー名] (
contosodatabaseserver01.database.windows.netなど) が表示され、それ以上の構成のためのオプションが提供されます。この完全修飾サーバー名をコピーします。これは、SQL Server Management Studio からお客様のサーバーとデータベースに接続するために使用します。
[設定] で、 [ネットワーク] を選択します。 [パブリック アクセス] タブを選択し、[パブリック ネットワーク アクセス] で [選択したネットワーク] を選択して、[ファイアウォール規則] セクションを表示します。
ツール バーの [クライアント IPv4 の追加] をクリックし、現在の IP アドレスを新しい IP ファイアウォール規則に追加します。 IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。
保存を選びます。 サーバーでポート 1433 を開いている現在の IP アドレスに対して、サーバーレベルの IP ファイアウォール規則が作成されます。
[OK] を選択し、 [ファイアウォール設定] ページを閉じます。
これで IP アドレスが IP ファイアウォールを通過できるようになりました。 SQL Server Management Studio やその他の任意のツールを使用して、データベースに接続できます。 必ず、お客様が先ほど作成したサーバー管理者アカウントを使用してください。
Important
既定では、すべての Azure サービスで、SQL Database IP ファイアウォール経由のアクセスが有効になります。 すべての Azure サービスで無効にするには、このページで [オフ] を選択します。
データベースに接続する
Visual Studio Code の MSSQL 拡張機能を使用して、データベースへの接続を確立します。
Visual Studio Code を開きます。
オブジェクト エクスプローラーの [新しい接続 ] で新しい接続を作成し、次の情報を入力します。 他のオプションは既定値のままにします。
Setting 推奨値 Description 接続の種類 Microsoft SQL Server この値は必須です。 サーバー名 完全修飾された Azure SQL データベースの論理サーバー名 たとえば、「 your_logical_azure_sql_server.database.windows.net」のように入力します。認証の種類 SQL Server 認証 SQL Server 認証を使用して、ユーザー名とパスワードを入力します。 Microsoft Entra 認証 Microsoft Entra ID を使用して接続するには、Microsoft Entra サーバー管理者の場合は、[ Microsoft Entra ID - MFA サポート付きユニバーサル] を選択します。 詳細については、Azure SQL による Microsoft Entra 認証の構成と管理を参照してください。 ログイン サーバー管理者アカウント サーバーの作成時に指定したアカウントです。 パスワード サーバー管理者アカウントのパスワード お客様がサーバーを作成したときに指定したパスワードです。
接続を選択します。 ADS でオブジェクト エクスプローラー ウィンドウが開きます。
オブジェクト エクスプローラーで、Databases、yourDatabase の順に展開して、サンプル データベース内のオブジェクトを表示します。
オブジェクト エクスプローラーで yourDatabase を右クリックし、 [新しいクエリ] を選択します。 データベースに接続された空のクエリ ウィンドウが開きます。
データベースのテーブルを作成する
テーブル デザイナーを使用して、大学の学生管理システムをモデル化する 4 つのテーブルを含むデータベース スキーマを作成します。
PersonCourseStudentCredit
次の図は、これらのテーブルの相互関係を示しています。 テーブルの一部は、他のテーブル内の列を参照します。 たとえば Student テーブルは、PersonId テーブルの Person 列を参照します。 このチュートリアルのテーブルの相互関係を把握するため、図を詳しく確認します。 有効な正規化されたデータベース テーブルを作成する方法の詳細については、「正規化されたデータベースの設計」を参照してください。 データ型の選択については、データ型を参照してください。 既定では、テーブルは既定のdbo スキーマに作成されます。つまり、たとえば、テーブルの 2 部構成の名前は dbo.Person となります。
オブジェクト エクスプローラーで、このデータベースに格納されているすべてのプロセスのドロップダウン メニューを展開する yourDatabase を選択し、[テーブル] フォルダーを右クリックし、[新しいテーブル] を選択します。 データベースに接続されている空のテーブル デザイナーが開きます。
テーブル デザイナー インターフェイスを使用して、データベースにこれらの 4 つのテーブルを作成します。 テーブル デザイナーを使用したテーブルの作成の詳細については、「 テーブル デザイナー」を参照してください。
人物テーブル
次に示すように、 必ず Person テーブルの主キー設定を構成してください。
学生テーブル
講座一覧
クレジット テーブル
T-SQL を使用して 4 つの新しいテーブルを作成する場合は、新しいクエリ ウィンドウで実行する T-SQL を次に示します。
-- Create Person table CREATE TABLE Person ( PersonId INT IDENTITY PRIMARY KEY, FirstName NVARCHAR (128) NOT NULL, MiddleInitial NVARCHAR (10), LastName NVARCHAR (128) NOT NULL, DateOfBirth DATE NOT NULL ); -- Create Student table CREATE TABLE Student ( StudentId INT IDENTITY PRIMARY KEY, PersonId INT FOREIGN KEY REFERENCES Person (PersonId), Email NVARCHAR (256) ); -- Create Course table CREATE TABLE Course ( CourseId INT IDENTITY PRIMARY KEY, Name NVARCHAR (50) NOT NULL, Teacher NVARCHAR (256) NOT NULL ); -- Create Credit table CREATE TABLE Credit ( StudentId INT FOREIGN KEY REFERENCES Student (StudentId), CourseId INT FOREIGN KEY REFERENCES Course (CourseId), Grade DECIMAL (5, 2) CHECK (Grade <= 100.00), Attempt TINYINT, CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED (StudentId, CourseId, Grade, Attempt) );オブジェクト エクスプローラーで、yourDatabase の Tables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。
テーブルにデータを読み込む
ローカル ワークステーション Downloads フォルダーに sampleData という名前のフォルダーを作成し、データベース用のサンプル データを格納します。 たとえば、「
c:\Users\<your user name>\Downloads」のように入力します。次のリンクを右クリックし、それらを sampleData フォルダーに保存します。
新しい Windows コマンド プロンプト ウィンドウを開き、sampleData フォルダーに移動します。 たとえば、「
cd c:\Users\<your user name>\Downloads」のように入力します。次の
bcpコマンドを実行して、サンプル データをテーブルに挿入します。server、database、user、password の各値は、お客様の環境の値に置き換えてください。bcp Course in SampleCourseData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Person in SamplePersonData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Student in SampleStudentData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Credit in SampleCreditData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
これで、先ほど作成したテーブルにサンプル データが読み込まれました。
データのクエリを実行する
データベース テーブルから情報を取得するには、次の T-SQL クエリを実行します。
この最初のクエリでは 4 つのテーブルをすべて結合し、"Dominick Pope" の指導を受けた生徒のうち、成績が 75% を超えている生徒を検索します。 クエリ ウィンドウで次の T-SQL クエリを実行します。
-- Find the students taught by Dominick Pope who have a grade higher than 75%
SELECT person.FirstName,
person.LastName,
course.Name,
credit.Grade
FROM Person AS person
INNER JOIN Student AS student
ON person.PersonId = student.PersonId
INNER JOIN Credit AS credit
ON student.StudentId = credit.StudentId
INNER JOIN Course AS course
ON credit.CourseId = course.courseId
WHERE course.Teacher = 'Dominick Pope'
AND Grade > 75;
このクエリでは 4 つのテーブルをすべて結合し、"Noe Coleman" がこれまでに登録したコースを検索します。 クエリ ウィンドウで次の T-SQL クエリを実行します。
-- Find all the courses in which Noe Coleman has ever enrolled
SELECT course.Name,
course.Teacher,
credit.Grade
FROM Course AS course
INNER JOIN Credit AS credit
ON credit.CourseId = course.CourseId
INNER JOIN Student AS student
ON student.StudentId = credit.StudentId
INNER JOIN Person AS person
ON person.PersonId = student.PersonId
WHERE person.FirstName = 'Noe'
AND person.LastName = 'Coleman';
ヒント
SQL クエリの作成の詳細については、「チュートリアル: Transact-SQL ステートメントの作成」にアクセスしてください。




![デザイナーの [制約の確認] 設定を示すクレジット テーブルのスクリーンショット。](media/design-first-database-visual-studio-code/credit-table-check-constraint-visual-studio-code.png?view=azuresql)