SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘SQL Server on Linux’ tag

SQL Server 2017 の on Linux における分散トランザクションのサポート状況について

leave a comment

Linux 上の SQL Server 2017 のリリース ノート に次のような記載があります。

Distributed transactions requiring the Microsoft Distributed Transaction Coordinator service are not supported on SQL Server running on Linux. SQL Server to SQL Server linked servers are supported unless they involve the DTC. For more information, see Distributed transactions requiring the Microsoft Distributed Transaction Coordinator service are not supported on SQL Server running on Linux.

2017/12 末時点の SQL Server 2017 on Linux では、DTC がサポートされておらず、ローカルトランザクションによるトランザクションについては、サポートされていますが、DTC を使用したトランザクションについてはサポートされていません。
(ローカルトランザクションはサポートされているので、同一サーバー内の複数の DB に対してのトランザクションはサポートされています)
これについては、AlwaysOn 可用性グループの DTC サポート (DTC_SUPPORT = PER_DB) についても含まれているようで、Linux 版については、可用性グループの分散トランザクションサポート についても該当することになるかと思います。
Read the rest of this entry »

Written by Masayuki.Ozawa

12月 28th, 2017 at 5:12 pm

新しいコマンドラインツールの mssql-cli のクエリ実行方法のメモ

leave a comment

先日、新しいクロスプラットフォーム対応のコマンドラインツールである、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」配下の履歴ファイルに保存されていますので、クエリを後から確認もできます。
image
このツールは Python で実装されているのですが、どのようにして、SQL Server に対してクエリが実行されているのかが気になったのでちょっと調べてみました。
SQL Server に接続するアプリケーション開発のファーストステップのドキュメントとしては、Build an app using SQL Server がありますが、Python SQL ドライバー を使うのではなく、別のアプローチで接続しているんですね。
Read the rest of this entry »

Written by Masayuki.Ozawa

12月 24th, 2017 at 12:14 pm

Posted in SQL Server

Tagged with ,

SQL Server on Linux でメンテナンプラン相当の処理を実行する方法

leave a comment

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 »

Written by Masayuki.Ozawa

12月 10th, 2017 at 1:06 pm

SQL Server on Linux のメモリ周りの設定について

leave a comment

SQL Server on Linux では、Linux 特有の動作として OOM Killer があり、Windows 版とは異なるメモリ設定を意識しておく必要があります。
これについては、次のドキュメントで詳細に解説されています。

本投稿では、これらのドキュメントの内容についてまとめてみたいと思います。
Read the rest of this entry »

Written by Masayuki.Ozawa

12月 9th, 2017 at 12:05 pm

SQL Server 2017 CU2 で、on Linux のメモリ制限が 2GB に緩和されています

leave a comment

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 からは説明しなくても大丈夫そうですね。

Written by Masayuki.Ozawa

12月 8th, 2017 at 7:09 pm

SQL Server on Linux についての個人的な所感

leave a comment

SQL Server on Linux がリリースされて 1 か月以上経過しました。
SNS 等でも SQL Server on Linux について意見が上がってきています。
SQL Server on Linux についての個人的な所感を一度書いてみたいと思います。
Read the rest of this entry »

Written by Masayuki.Ozawa

11月 20th, 2017 at 12:06 am

Posted in SQL Server

Tagged with ,

単純な Sleep 以外で SQL Server のコンテナーを起動してみる

leave a comment

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 が存在した状態となっています。
image
エディションやロケールについても設定をするようにしていますのでご参考になれば幸いです。

Written by Masayuki.Ozawa

11月 14th, 2017 at 10:35 pm

Posted in SQL Server

Tagged with ,

CLUSTER_TYPE=EXTERNAL のクラスターの切り替え方法を確認してみる

leave a comment

SQL Server 2017 の AlwaysOn 可用性グループでは、CLUSTER_TYPE=EXTERNAL を設定することで、可用性グループの切り替えをクラスターマネージャー主導で実施することができます。
というより、EXTERNAL を使用した場合、通常の方法ですとフェールオーバーができないようにロックされているんですよね。
imageimage
とはいっても、SQL Server ですので何らかの方法で、SQL Server に対してクエリを実行してフェールオーバーを実行しているのではと思って調べてみました。
結論を書くと、EXTERNAL を使っていても、クエリベースでフェールオーバーを実行することは可能でした。
Read the rest of this entry »

Written by Masayuki.Ozawa

8月 26th, 2017 at 7:22 pm

SQL Server on Linux の可用性グループのリスナーの作成方法

leave a comment

Linux 上の SQL Server の Always On 可用性グループを構成します。 に基本的な作業は記載されていますが、一度まとめておきたいと思います。 Read the rest of this entry »

Written by Masayuki.Ozawa

8月 26th, 2017 at 6:25 pm

SQL Server 2017 のクロスプラットフォームの AlwaysOn

leave a comment

SQL Server 2017 では、クロスプラットフォームの AlwaysOn が構築できるようになっています。
Setting up SQL Server High-Availability between Windows and Linux with SQL Server 2017 では分散型可用性グループで構築を行っていたようなのですが、クラスターレス可用性グループで構築することができるのかなと思って試してみました。
Read the rest of this entry »

Written by Masayuki.Ozawa

8月 17th, 2017 at 10:41 pm