3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

無料のAzure SQL Databaseを試してみたメモ

Last updated at Posted at 2024-04-08

概要

Azure SQL Database を無料で試す (プレビュー)を試してみた。

データベースの作成

image.png

基本はデフォルトの設定。認証方法は両方を使用するようにした。

image.png

image.png

その月の無料枠を超えたら止まるように設定(デフォルト)。次の月になって無料枠ができたら使えるようになるもよう。
image.png

コストはちゃんと0になっている。

image.png

日本語を扱うので照合順序Japanese_CS_AS_KS_WSに変更した。(参考 *2)

対象 区別する(Sensitive) 区別しない(Insensitive)
大文字と小文字(Case) CS CI
アクセント(Accent) AS AI
ひらがなとカタカナ(Kana) KS KI
半角と全角(Width) WS WI

image.png

テスト用のテーブル作成

テスト用にテーブルを作成し、データを挿入した。

CREATE TABLE TestTable (
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    Name NVARCHAR(20) NOT NULL,
);
INSERT INTO TestTable VALUES ('test');
INSERT INTO TestTable VALUES ('日本語テストです');
SELECT * FROM TestTable ;

Firewallの設定

もしもFirewallの穴あけをしなかった場合、関数実行時に下記のようなエラーとなる。

Cannot open server 'my-free-sqldbserver' requested by the login. Client with IP address 'x.xxx.xxx.xx' is not allowed to access the server. To enable access, use the Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect.

SQL Serverのネットワークで「Azureサービスおよびリソースにこのサーバへのアクセスを許可する」にチェックを入れて、Functionsからアクセスできるようにする。

image.png

関数からSQLを発行する

Azure Functions の Azure SQL 入力バインドの手順に従ってSQLを発行する。

関数アプリの作成

関数の作成はポータルから行った。

基本設定

プロパティ
OS Linux
ランタイムバージョン 4.31.1.1
発行モデル コード
コンテナイメージ Node-20

環境変数

環境変数にSQL Serverの接続文字列を格納する必要がある。
環境変数にいれずに直接ソースに書くと、ConnectionStringSetting 'hoge' is missing in your function app settings, please add the setting with a valid SQL connection string.のエラーとなる。

image.png

SQLデータベースから接続文字列取得

image.png

今回はSQL認証で接続する。接続文字列をコピーし、{your_password}をデータベース作成時に決めたパスワードに置き換える。
image.png

Functionsアプリに設定

image.png

image.png

保存ボタンを押さないと反映されないので注意
image.png

関数のデプロイ

TypescriptVSCodeの拡張経由でデプロイした。

image.png

ソースコード

Azure Functions の Azure SQL 入力バインドより

src/functions/httpTrigger1.ts
import { app, HttpRequest, HttpResponseInit, InvocationContext,input } from "@azure/functions";
const sqlInput = input.sql({
    commandText: 'select [ID], [Name] from TestTable',
    commandType: 'Text',
    connectionStringSetting: 'MyConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);
    const toDoItems = context.extraInputs.get(sqlInput);
    return {
        jsonBody: toDoItems,
    };
};

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraInputs: [sqlInput],
    handler: httpTrigger1
});

テスト実行

無事、取得できることを確認できた。
image.png

Prismaでモデルファースト 2024.04.27 追記

続き。

mssqlで接続 2024.05.04 追記

mssql

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?