SAP on SQL: お客様およびパートナー様向け更新の概要 (2017 年 3 月)


執筆者: Cameron (MSFT SAP Program Manager)

このポストは、2017 年 4 月 4 日に投稿された SAP on SQL: General Update for Customers & Partners March 2017 の翻訳です。

 

SAP とマイクロソフトは、SAP on SQL Server プラットフォームに対して継続的に新機能を追加してきました。SAP on Windows & SQL Server の第一の目標は、できるだけ少ない TCO と簡素化された運用により、最高のパフォーマンスと可用性を実現することです。このブログでは、ここ数か月間の更新、修正、強化、推奨ベスト プラクティスをまとめてご説明します。

1. 7.4x および 7.5x システムに必要な緊急カーネル更新プログラム.

SAP カーネルの不具合により SQL Server のエラー ログに次のようなメッセージが出力され、SQL Server が停止することがあります。

SAP はデータベースからの読み取り時にカーソルをオープンしますが、不具合によりこのカーソルがクローズされません。最終的に、すべてのワーカー スレッドが占有され、SQL Server が停止する場合があります。

NetWeaver 7.4x または 7.5x システムについては、SAP カーネルを更新することをお勧めします。

All schedulers on Node 3 appear deadlocked due to a large number of worker threads waiting on ASYNC_NETWORK_IO. Process Utilization 4%.

All schedulers on Node 3 appear deadlocked due to a large number of worker threads waiting on ASYNC_NETWORK_IO. Process Utilization 5%.

All schedulers on Node 3 appear deadlocked due to a large number of worker threads waiting on ASYNC_NETWORK_IO. Process Utilization 5%.

SAP Note 2333478 – Database cursors not closed when table buffer is full

2. 問題の検出に役立つ SQL Server DMV とログ

上記のような問題の診断には下記の手順が有効です。

1. 役立つスクリプト: ブロックしているクエリや長時間実行されているクエリを表示します。特定のインスタンスで実行されているアクティブな要求数も表示します。

select session_id, request_id,start_time,
status
,

command, wait_type, wait_resource, wait_time, last_wait_type, blocking_session_id

from
sys.dm_exec_requests
where session_id >49 order
by wait_time desc;

SQL Server の内部エンジン のプロセスを表示するには、「where session_id >49」を削除します。

2. 役立つスクリプト: メモリ消費に関連する問題を表示します。

current memory grants per query/session

select

session_id, request_time, grant_time ,

requested_memory_kb /
( 1024.0 * 1024 ) as requested_memory_gb ,

granted_memory_kb /
( 1024.0 * 1024 ) as
granted_memory_gb ,

used_memory_kb /
( 1024.0 * 1024 ) as used_memory_gb ,

st.text

from

sys.dm_exec_query_memory_grants g  cross
apply sys.dm_exec_sql_text(sql_handle) as  st

必要に応じて、where 条件のコメントを外してください

where grant_time is not null — これらのセッションはメモリの割り当てを使用しています。

where grant_time is null — これらのセッションはメモリの割り当てを待っています。

列ストアを使用する SQL Server システムで並列処理の最大限度 (Max Degree of Parallelism) に大きな値を設定した場合、メモリ使用量が増えることがあります。

列ストア テーブルへのクエリ実行に必要なメモリの量は、次の計算式 (英語) で求められます。

メモリ許可要求 (MB) = ((4.2 * 列ストア インデックス内の列数) + 68) * 並列処理の次数 + (文字列型の列の数 * 34)

上記の DMV はこのような問題の診断に役立ちます。grant_time is null または grant_time is not nullの where 条件のコメントを外すことは忘れないようにしてください。

3. 診断ツール: Hangman.vbs により、OSS メッセージに添付するためのログを収集します。

このユーティリティの実行に慣れておくことを推奨します。Hangman.vbs はシステムから有用なパラメーターを取得します。パフォーマンスや安定性の問題に関して OSS メッセージを送信する場合は、このユーティリティを実行しておくことが推奨されます。

948633 – Hangman.vbs

2142889 – How to Run the Hangman Tool [VIDEO]

Hangman.vbs での分析については、次の 2 つのブログ記事で説明しています。

https://blogs.msdn.microsoft.com/saponsqlserver/2008/10/24/analyzing-a-hangman-log-file-part-1/ (英語)

https://blogs.msdn.microsoft.com/saponsqlserver/2008/11/23/analyzing-a-hangman-log-file-part-2/ (英語)

4. SQL Server 2016 クエリ ストア

SQL Server クエリ ストア (英語) は既定では無効となっていますが、とても有用なツールです。高負荷なクエリや、BUKRS (会社コード) などの入力パラメーターによって速度が変わるクエリを特定することができます。

この機能は、SQL Server 2016 以降でのみ利用できます。Channel 9 のビデオ (英語) も参照してください。


3. 問題の診断に役立つ Windows Perfmon テンプレート

この記事では、SQL Server データベース サーバーと SAP アプリケーション サーバーでの実行を推奨する Perfmon カウンターをまとめた、XML テンプレート ファイルをご提供します。一部のファイアウォールやプロキシでは XML ファイルのダウンロードがブロックされるため、このテンプレート「zsapbaseline」は、「zSAPBaseline.txt」というテキスト ファイルにしています。また、このテンプレートは SQL Server の名前付きインスタンス「PRD」用に作成されています。このインスタンス名を検索して、皆様が使用している SQL インスタンス名に変更してください。ファイルのダウンロード後、ファイル名を「zSAPBaseline.xml」に変更して、次の手順を行います。

1. 実行メニューから perfmon.msc を開きます。

2. [データ コレクター セット] -> [ユーザー定義] に移動します。

3. [ユーザー定義] を右クリックして [新規] を選択します。

4. テンプレート ファイル zSAPBaseline.xml から作成します。

5. ファイル システムを埋め尽くさないように、次のパラメーターを必ず設定してください。

6. サーバーが再起動しても、収集機能が自動的に再起動するように、スケジュールを設定します。

注意: Excel でグラフを作成する場合は、コマンド「relog -f csv inputfile.blg -o outputFile.csv」で csv ファイルに変換できます。

4. 新たにインストールする場合は Windows 2016 を使用する

Windows 2016 は、現在、NetWeaver ベース アプリケーションのすべてのリリース (7.00 から 7.51 まで) を含め、ほとんどの SAP ソフトウェアに広く利用できます。

新たにインストールする場合は、このオペレーティング システムの使用をお勧めします。個々の SAP アプリケーションの正確なリリース状況について疑問がある場合は、このBlog記事で質問をお寄せください。

SAP に広く利用できる Windows 2016 (英語)

5. Windows 2016 サーバーで推奨される強化対策

Windows 2016 にセキュリティ構成ウィザードはありません。以前の Windows リリースで必要とされていた強化対策の多くは不要になりました。

ただし、いくつかの推奨事項があります。

1. Internet Explorer を削除し、「SAP Note 2055981 – Removing Internet Explorer & Remotely Managing Windows Servers」に従います。

dism /online /Disable-Feature /FeatureName:Internet-Explorer-Optional-amd64

2. Windows Firewall を常に有効化します。グループ ポリシー オブジェクトを使用してポートを構成 (英語)

3. 次のサイトでセキュリティに関する情報を再確認します。https://www.microsoft.com/ja-jp/cloud-platform/windows-server-security

4. Windows Server 2016 のセキュリティ ベースライン (英語) を使用します。

6. SQL Server 2016 のURL へのバックアップの設定

データベースを URL (Azure BLOB) にバックアップする場合 (特に VLDB の場合)、次のベスト プラクティスを適用してください。

1. 複数の URL ターゲットにバックアップします。SQL Server 2016 より前のバージョンでは、サポートされる URL ターゲットは 1 つだけでした。

2. 「MAXTRANSFERSIZE = 4194304」を指定して、SQL Server の最大転送サイズが 4 MB となるようにします。このパラメーターを指定しない場合、ほとんどのAzure BLOB へのネットワーク IO は1 MB となります。下記のテストでは、消費されるブロックの約 70% を削減できるという結果となっています。

3. Azure BLOB へのブロック書き込み要求数を減らすために、COMPRESSION を使用します。下記のテストでは、このオプションによりブロック サイズの 65% の削減と、2 ~ 4 倍の高速化が可能となるという結果でした。なお、COMPRESSION の使用時には CPU 使用量にも注意してください。サーバーの CPU 使用量が既に高い場合 (たとえば、80% を超える場合) は、COMPRESSION 使用時の CPU 使用量を注意して監視してください。

4. バックアップ先のストレージ アカウントに十分な帯域幅がある場合は、BUFFERCOUNT を増やすことも考えられます。これを増やすことで、バックアップの処理速度が速くなります。指定できるのは 20 ~ 500 です。要件に合わせて、ベストな値を選択してください。

VLDB を Azure BLOB にバックアップする場合、次のような問題が報告されています。

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

10 percent processed.

20 percent processed.

30 percent processed.

Msg 3202, Level 16, State 1, Line 78

Write on "https://customer.blob.core.windows.net/dbw-db-backups/DBW_20170102111029_FULL_X22.bak" failed: 1117(The request could not be performed because of an I/O device error.)

Msg 3013, Level 16, State 1, Line 78

BACKUP DATABASE is terminating abnormally.

次のトレース コマンドを使用してトレースを有効にすると、より詳細な診断が可能です。

DBCC TRACEON(3004, 3051, 3212, 3014, 3605, 1816)

(トレースを無効にするには、「DBCC TRACEOFF(3004, 3051, 3212, 3014, 3605, 1816)」を実行します。)

より詳しい診断情報がエラー ログに出力されます。

Write to backup block blob device
https://storageaccount.blob.core.windows.net/backup/xx.bak failed. Device has reached its limit of allowed blocks.

このエラーは、Azure BLOB に 50,000 ブロックという制限があるために発生しています。上記のベスト プラクティスを適用することにより、このようなエラーを避けられます。

下の表に、参考としてテスト結果を示します。今回は、約 2 GB の小さなデータベースでテストをしました。大規模なデータベースの場合も、挙動が異なることはありますが、上記のベスト プラクティスが通用します。

「非 TDE データベース」とは、TDE (透過的なデータ暗号化) を行わないデータベースを意味します。「TDE データベース」とは、TDE 暗号化を行うデータベースを意味します。

非 TDE データベースの URL へのバックアップ 64 KB ネットワーク IO 1 MB ネットワーク IO 4 MB ネットワーク IO ターゲット バックアップ サイズ バックアップにかかった時間 バックアップ速度
オプションの指定なし 40 752 761 MB 85 秒 8.9 MB/秒
MAXTRANSFERSIZE
= 4194304
39 185 764 MB 129 秒 5.86 MB/秒
MAXTRANSFERSIZE
= 4194304COMPRESSION
5 67 269 MB 27 秒 27.9 MB/秒
TDE データベースの URL へのバックアップ
オプションの指定なし 40 752 761 MB 73 秒 10.3 MB/秒
MAXTRANSFERSIZE
= 4194304
39 185 764 MB 80 秒 9.4 MB/秒
MAXTRANSFERSIZE
= 4194304COMPRESSION
53 67 271 MB 33 秒 22.5 MB/秒

参考までに、バックアップ コマンドを次に示します。

DECLARE @Database varchar(3)
DECLARE @BackupPath varchar(100)
DECLARE @TimeStamp varchar(15)
DECLARE @Filename1 VARCHAR(MAX)
DECLARE @Full_Filename1 AS
VARCHAR (300)
DECLARE @Full_Filename2 AS
VARCHAR (300)
DECLARE @Full_Filename3 AS
VARCHAR (300)
DECLARE @Full_Filename4 AS
VARCHAR (300)
DECLARE @Full_Filename5 AS
VARCHAR (300)
DECLARE @Full_Filename6 AS
VARCHAR (300)
DECLARE @Full_Filename7 AS
VARCHAR (300)
DECLARE @Full_Filename8 AS
VARCHAR (300)


SET @Database =
'DBW'
SET @BackupPath =
'https://customer.blob.core.windows.net/'
+
Lower(@Database)
+
'-db-backups/'
SET @TimeStamp =
REPLACE(CONVERT(VARCHAR(10),
GETDATE(), 112),
'/',
")
+
REPLACE(CONVERT(VARCHAR(10),
GETDATE(), 108)
,
':',
")
SET @Full_Filename1 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X1.bak'
SET @Full_Filename2 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X2.bak'
SET @Full_Filename3 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X3.bak'
SET @Full_Filename4 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X4.bak'
SET @Full_Filename5 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X5.bak'
SET @Full_Filename6 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X6.bak'
SET @Full_Filename7 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X7.bak'
SET @Full_Filename8 = @BackupPath + @Database +
'_'
+ @TimeStamp +
'_FULL_X8.bak'


– データベースのバックアップ

BACKUP
DATABASE @Database TO
URL
= @Full_Filename1,
URL
=  @Full_Filename2,
URL
=  @Full_Filename3,
URL
=  @Full_Filename4,
URL
=  @Full_Filename5,
URL
= @Full_Filename6,
URL
=  @Full_Filename7,
URL
=  @Full_Filename8
WITH
STATS
= 10,
FORMATMAXTRANSFERSIZE
= 4194304COMPRESSION
GO


SQLCAT チームでは、こちらのブログ記事 (英語) で VLDB のバックアップについて説明しています。

Simon Su 氏をはじめ、エスカレーション エンジニア、Microsoft CSS、Asia Pacific および Greater China の皆様には、URL へのバックアップに関するこの記事へのご協力に感謝申し上げます。おかげさまでお客様の問題の解決につながりました。

7. Windows Server、SQL Server、SAP カーネルを最新のバージョンにする

Windows と SQL Server で SAP を運用しているお客様の多くがオペレーティング システムとデータベースを新しいバージョンに最新化し、古くても Windows 2012 R2 と SQL Server 2012 が使用されることが多くなっています。ただ、一部のお客様は、古いバージョンのオペレーティング システムとデータベースを使用しています。たとえば、次のようなバージョンです。

1. Windows 2003: 14 年以上前のものであり、マイクロソフト、 SAP双方 のサポートが終了しています。すぐに更新してください。 2135423 – Support of SAP Products on Windows Server 2003 after 14-Jul-2015

2. SQL Server 2005: マイクロソフトのサポートは昨年終了しました。すぐに更新してください。

3. Windows 2008 および Windows 2008 R2: いずれのバージョンのオペレーティング システムもサポート終了時期が近づいています。利用可能な最新のオペレーティング システムへのアップグレードを計画することを推奨します。

4. SQL Server 2008 および SQL Server 2008 R2: いずれのバージョンのデータベースもサポート終了時期が近づいています。SQL Server 2014 または SQL Server 2016 へのアップグレードを推奨します。SAP BW を運用しているお客様は、新バージョンの SQL Server における改善により、数百パーセントに及ぶパフォーマンス向上を実現できます。

5. SAP カーネル 7.00、7.01、7.21、7.40、7.42 はサポートが終了しています。2017 年 3 月時点では、7.22_EXT または 7.49 のいずれかのカーネルの実行が推奨されます。

推奨: 2017 年 3 月時点では、Windows 2016 (最新の更新プログラムをすべて適用) と、SQL Server 2016 (最新のサービス パックと累積更新プログラムを適用) が推奨されます。SQL Server のパッチはこちら (英語) からダウンロードできます。

2254428 – Error while upgrading to SAP NetWeaver 7.5 based systems: OS version 6.1 out of range (too low)

カーネルの互換性に関する資料のダウンロード

2350788 – Using kernel 7.49 instead of kernel 7.40, 7.41, 7.42 or 7.45

2133909 – SAP Kernel 722 (EXT): General Information and UsageSAP

8. Windows Server 2016 のクラウド監視: 使用するポート番号の変更方法

Windows 2016 には「クラウド監視」と呼ばれる非常に便利な機能があります。

クラウド監視は、前バージョンの「ファイル共有監視」からの機能強化の 1 つであり、コスト及び機能性に関して非常に優れています。

クラウド監視は rhs.exe プロセス内に実装されており、アドレス <ストレージ アカウント名>.blob.core.windows.net にポート 443 で HTTPS コールを行います。

厳しいセキュリティ要件を持つ顧客の場合、クラウド監視で使用される既定のポートの変更手順を知りたいとご要望をいただくことがあります。

rhs.exe はプロキシ サーバー経由で通信できます。これを行うには、次のコマンドを実行します。

netsh winhttp set proxy proxy-server="https=<サーバー>:<ポート>"

PowerShell または UI を機能させるためにこの設定を行う場合は、.net プロキシ設定を有効にしてください。最も簡単な設定方法は、 [コントロール パネル] ->[インターネット オプション] でのプロキシの設定です(Internet Explorer は既に削除されている想定です)。

さらにセキュリティ要件がある場合、アドレス <ストレージ アカウント名>.blob.core.windows.net をファイアウォールのホワイトリストに追加します。

クラウド監視の既定の動作の変更により、プロキシ サーバーや他の関連インフラストラクチャ (ファイアウォールなど) がクォーラムの計算に影響を与えることになります (たとえば、プロキシ サーバーの障害が原因でクラスターが過半数を確保できなくなり、意図的にクラスター ロールをオフラインにすることがあります)。

9. SQL Server 上で SAP BW を運用しているお客様、SAP ERP システムで列ストアを使用しているお客様にとっての重要ノート

SQL Server 上で SAP BW を運用しているお客様は、いくつかの新しいテクノロジを利用できます。

1. SAP BW 7.00 から 7.50 のお客様 – SQL Server Column Store on F Fact and E Fact tables
https://launchpad.support.sap.com/#/notes/2116639

2. SAP BW 7.40 から 7.50 のお客様 – SQL Server フラット キューブ (英語)

3. SAP BW 7.50 SPS 04 以上では、FEMS プッシュダウン (英語) を活用できます。

SAP BW で利用できるその他のパフォーマンス改善については、こちらのブログ記事 (英語) を参照してください。

レポート MSSCOMPRESS を更新することを推奨します。こちらのブログ記事 (英語) では、このレポートの新しいバージョンについて説明しています。

10. AlwaysOn 上の SQL Server に関するインストール後の作業 – SWPM

SAP インストール ツールは、SQL Server AlwaysOn に完全には対応していません。一般的には、AlwaysOn 可用性グループを設定する前に SAP アプリケーションをインストールすることが推奨されます。

AlwaysOn レプリカを追加した後、下記の SAPInst オプションを実行して、必要なユーザーおよびジョブを作成できます。

NetWeaver のインストールする大まかな手順の例

注意: このオプションは、各レプリカに対して、そのレプリカがプライマリ ノードとしてオンラインであるときに実行する必要があります。このオプションを実行する前に、SAP アプリケーションを停止する必要があります

次のブログ記事では便利な sap_synchronize_always_on スクリプトを紹介していますので、ご参照ください。

https://blogs.msdn.microsoft.com/saponsqlserver/2016/02/25/always-on-synchronize-sap-login-jobs-and-objects/ (英語)

SAP Note 1294762 – SCHEMA4SAP.VBS

SAP Note 683447 – SAP Tools for MS SQL Server

11. SQL Server 2016 SP1 –トランザクション ログのNVDIMM への書き込み

NVDIMM を使用することで、SQL Server のトランザクション ログの書き込みパフォーマンスを劇的に速くすることができます。

これは、SQL Server 2016 SP1 でリリースされた新しいテクノロジです。

OS / DBマイグレーション時のダウンタイムについてきわめて厳しい要件を持つお客様は、この新しい機能をお試しになることを推奨します。

この機能の詳細については、以下のブログ記事を参照してください。

https://blogs.msdn.microsoft.com/psssql/2016/04/19/sql-2016-it-just-runs-faster-multiple-log-writer-workers/ (英語)

https://blogs.msdn.microsoft.com/bobsql/2016/11/08/how-it-works-it-just-runs-faster-non-volatile-memory-sql-server-tail-of-log-caching-on-nvdimm/ (英語)

推奨される Note およびリンク

555223 – FAQ: Microsoft SQL Server in NetWeaver based

1676665 – Setting up Microsoft SQL Server 2012

1966701 –
Setting up Microsoft SQL Server 2014

2201060 – Setting up Microsoft SQL Server 2016

1294762 – SCHEMA4SAP.VBS

1744217 – MSSQL: Improving the database performance

2447884 – VMware vSphere with VMware Tools 9.10.0 up to 10.1.5: Performance Degradation on Windows

2381942 – Virtual Machines Hanging with VMware ESXi 5.5 p08 and p09

2287140 –
Support of Failover Cluster Continuous Availabilty feature (CA)

2046718 – Time Synchronization on Windows

2325651 – Required Windows Patches for SAP Operations

2438832 – Network problems if firewall used between database and application servers

1911507 – Background Jobs canceled during failover of (A)SCS instance in windows failover cluster

Netsh の構成

https://parsiya.net/blog/2016-06-07-windows-netsh-interface-portproxy/ (英語)

第三者の Web サイト、SAP、およびその他の情報源からの内容は、批判、論評、報道、教育、学問、研究を目的とする公正な使用 (英語) により再利用されています。

 

Comments (0)

Skip to main content