Azure SQL Database
Azure SQL Database構築手順をまとめます。
目次
Azureが提供するデータベース一覧
こんな感じ。
違いについてはこちらの方がまとめていたので参照してください。
新規作成
Microsoftのチュートリアルをなぞっただけです。
言葉足らずのところは本家を参照してください。
まず「新規 -> SQL Database」で検索します。
作成します。
適当に入力していきます。
サーバを作成していなかったら新しくサーバを作成します。
DTUとストレージからプランを選択します。
後からでも変更できるのでとりあえずBasicにしておきます。
これなら月額575円ですみます。ちょっとしたものならこれで事足りそうです。
「作成」を選択。
デプロイ中。
ファイアウォール設定
SQL Databaseはデフォルトでは外部からの接続を弾くように設定されています。
個別に登録したIPアドレスのみを許可します。
カラムから「SQL Database」を選択し、先ほど作成したデータベースを選択します。
「サーバーファイアウォールの設定」を開きます。
クライアントIPアドレスに現在接続しているIPアドレスが表示されます。
このIPアドレスを追加して「保存」しましょう。
クエリ エディターから操作
SQL Databaseを開いて「ツール」を選択します。
「クエリ エディター」を開きます。
「ログイン」を選択してユーザ名、パスワードを入力します。
適当にテーブルでも作ってみましょう。
CREATE文を入力したら左上の「実行」を押します。
すると下にメッセージが出力されます。
以下のコマンドでテーブル一覧を表示します。
作ったテーブルを確認できました。
select name from sysobjects where xtype = 'U'
*SQL ServerではSHOW tables;
がないみたいです。無駄に詰まった。
Pythonから接続
OSはMacです。
pymssqlをインストールします。
pip install pymssql
以下のようなエラーが出ました。
error: command 'clang' failed with exit status 1
以下の記事を参考に解決します。
brew unlink freetds; brew install homebrew/versions/freetds091 brew link --force freetds@0.91
改めて
pip install pymssql
こちらのコードを参考にサンプルデータベースのNorthwindに接続します。
こんな感じ。
usernameはusername@server
という表記であることに注意です。
import pymssql server = 'server.database.windows.net' database = 'database' username = 'username@server' password = 'password' conn = pymssql.connect(server, username, password, database) cursor = conn.cursor() cursor.execute("select name from sysobjects where xtype = 'U'") result = cursor.fetchone() print(result) conn.close()
エラーリスト
IPアドレスが許可されていない
クライアントのIPアドレスをAzure SQL Database上のファイアウォール設定で追加する必要があります。
pymssql.OperationalError: (40615, b"Cannot open server 'paper-miner' requested by the login. Client with IP address 'XX.XX.XX.XX' is not allowed to access the server. To enable access, use the Windows 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.DB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n")
SQLコマンドが間違っている
showコマンドはSQL Serverには存在しません。
pymssql.ProgrammingError: (2812, b"Could not find stored procedure 'show'.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n")