先日、新しいクロスプラットフォーム対応のコマンドラインツールである、mssql-cli というツールがリリースされました。
Try mssql-cli, a new interactive command line tool for SQL Server
今まで、コマンドラインで SQL Server に接続するためには、sqlcmd を使う機会が多かったと思います。
sqlcmd もクロスプラットフォーム対応されているのですが、このツール自体は、SQL Server 2005 から実装されたもので (それ以前は、osql / isql として実装)、バージョンによって改善はされているのですが、大きな変更はないツールだったのではないでしょうか。
mssql-cli は、モダンなコマンドラインツールとして開発が行われているもので、次の画像のように、コマンドラインでインテリセンスを使いながら入力をするということが可能です。
クエリの実行履歴についても「~/.config/mssqlcli」配下の履歴ファイルに保存されていますので、クエリを後から確認もできます。
このツールは Python で実装されているのですが、どのようにして、SQL Server に対してクエリが実行されているのかが気になったのでちょっと調べてみました。
SQL Server に接続するアプリケーション開発のファーストステップのドキュメントとしては、Build an app using SQL Server がありますが、Python SQL ドライバー を使うのではなく、別のアプローチで接続しているんですね。
Read the rest of this entry »
Archive for the ‘SQL Server on Linux’ tag
新しいコマンドラインツールの mssql-cli のクエリ実行方法のメモ
SQL Server on Linux でメンテナンプラン相当の処理を実行する方法
SQL Server on Linux の非サポート機能として SQL Server Management Studio (SSMS) に「メンテナンスプラン」が記載されています。
SQL Server on Linux の SSIS では、一部の機能がサポートされていないのですが、メンテナンスプランのベースとなっている、制御フローのコンポーネントについてはサポート対象となっています。
サポートされており、サポートされていないコンポーネント
抽出、変換、および SSIS Linux でのデータを読み込む
SQL Server Integration Services ( SSIS ) on Linux とは
Read the rest of this entry »
SQL Server on Linux のメモリ周りの設定について
SQL Server on Linux では、Linux 特有の動作として OOM Killer があり、Windows 版とは異なるメモリ設定を意識しておく必要があります。
これについては、次のドキュメントで詳細に解説されています。
- How to safeguard SQL Server on Linux from OOM-Killer
- Performance best practices and configuration guidelines for SQL Server 2017 on Linux
本投稿では、これらのドキュメントの内容についてまとめてみたいと思います。
Read the rest of this entry »
SQL Server 2017 CU2 で、on Linux のメモリ制限が 2GB に緩和されています
SQL Server 2017 CU2 で、SQL Server on Linux のメモリ制限が 3.25 GB から 2GB に緩和されています。
FIX: Minimum memory limit set to 2GB to install or start SQL Server 2017
各ドキュメントも更新が行われています。
Updating memory requirement to 2GB for CU2
Windows / Mac の Docker で使う場合などは、デフォルトの 2GB から変更する必要がありますよという説明をしていたのですが、CU2 からは説明しなくても大丈夫そうですね。
SQL Server on Linux についての個人的な所感
SQL Server on Linux がリリースされて 1 か月以上経過しました。
SNS 等でも SQL Server on Linux について意見が上がってきています。
SQL Server on Linux についての個人的な所感を一度書いてみたいと思います。
Read the rest of this entry »
単純な Sleep 以外で SQL Server のコンテナーを起動してみる
https://github.com/twright-msft/mssql-node-docker-demo-app/blob/master/import-data.sh では、単純に 90 秒の Sleep で制御をしていましたが、バックアップのリストア等をしながらコンテナーを起動する場合に、処理タイミングを見計らって実行してみたかったので、作ってみました。
https://github.com/MasayukiOzawa/SQLServer-Util/tree/master/Docker/Dockerfile
処理としては、WWI のデータベースを取得してコンテナーを起動するような内容となっています。
dockerfile では、COPY をコメント化していますが、コンテナーホストからファイルをコピーした場合は、ダウンロードはせずに、コピーしたバックアップファイルを使用するようにしています。
次のようなコマンドで実行することができるかと。
docker build -t sqlserver . docker run -d --name sqlcontainer -d -p 1433:1433 sqlserver docker logs -f --tail 10 sqlcontainer
起動したコンテナーでは次のように WWI が存在した状態となっています。
エディションやロケールについても設定をするようにしていますのでご参考になれば幸いです。
CLUSTER_TYPE=EXTERNAL のクラスターの切り替え方法を確認してみる
SQL Server 2017 の AlwaysOn 可用性グループでは、CLUSTER_TYPE=EXTERNAL を設定することで、可用性グループの切り替えをクラスターマネージャー主導で実施することができます。
というより、EXTERNAL を使用した場合、通常の方法ですとフェールオーバーができないようにロックされているんですよね。
とはいっても、SQL Server ですので何らかの方法で、SQL Server に対してクエリを実行してフェールオーバーを実行しているのではと思って調べてみました。
結論を書くと、EXTERNAL を使っていても、クエリベースでフェールオーバーを実行することは可能でした。
Read the rest of this entry »
SQL Server on Linux の可用性グループのリスナーの作成方法
Linux 上の SQL Server の Always On 可用性グループを構成します。 に基本的な作業は記載されていますが、一度まとめておきたいと思います。 Read the rest of this entry »
SQL Server 2017 のクロスプラットフォームの AlwaysOn
SQL Server 2017 では、クロスプラットフォームの AlwaysOn が構築できるようになっています。
Setting up SQL Server High-Availability between Windows and Linux with SQL Server 2017 では分散型可用性グループで構築を行っていたようなのですが、クラスターレス可用性グループで構築することができるのかなと思って試してみました。
Read the rest of this entry »
SQL Server on Linux の AlwaysOn 可用性グループで自動フェールオーバーが可能な構成
最近、クラスターレス可用性グループしか触っていなかったのですが、Azure で Netsted VM ができるようになり、検証環境のリソースが取れるようになったので、久しぶりに SQL Server on Linux の Pacemaker を使用した可用性グループを構築していたところ、いろいろと情報が追加されていたので軽くメモを。
重要なドキュメントしては High availability and data protection for availability group configurations が大幅に更新されていることでしょうか。
Read the rest of this entry »