SQL Server アップグレードパスについて

皆さん、こんにちは。 BI Data Platform サポートチームです。今回は SQL Server のアップグレードパスについてご紹介いたします。 アップグレードパスにつきましては、弊社では以下のような技術情報を公開いたしております。(下記の技術情報は SQL Server 2016 へのアップグレードパスに関する情報です。)   タイトル : サポートされるバージョンとエディションのアップグレード URL      : https://docs.microsoft.com/ja-jp/sql/database-engine/install-windows/supported-version-and-edition-upgrades   上述の公開情報は、同一サーバーにおけるアップグレードパス (インプレース アップグレード) に関し記載しているものであり、別サーバーへのデータベース移行によるアップグレード (マイグレーション) の場合には該当いたしません。 例えば、上述の公開情報によるインプレース アップグレードでは、SQL Server 2014 Standard Edition から SQL Server 2016 Express Edition はサポートされていないアップグレードパスである為、アップグレードを実施した場合には失敗します。一方、マイグレーションによるアップグレードの場合には、上述の公開情報には該当しない為、SQL Server 2014 Standard edition から別のサーバーの SQL Server 2016 Express Edition へのデータ移行によるアップグレードは成功いたします。 つまり、マイグレーションによるアップグレードの場合には、上述の公開情報のパスを意識する必要はなく、下位のエディションにもアップグレードが可能となります。また、公開情報にあるアップグレード元のサービスパックの適用条件も考慮する必要はありません。 ただし、移行先となる SQL Server…


SQL Server 2017 のインストール時に tempdb のサイズを大きくしすぎるとExecution Timeout Expiredエラーになる事がある

皆さん、こんにちは。 BI Data Platform サポートチームです。 SQL Server 2017 以降ではインストール時に tempdb の初期サイズを変更できるようになっています。 これに伴い、インストール時にある程度大きなサイズを指定してインストールを検討されるお客様もいらっしゃるかと思います。 ただ、上記の初期サイズの設定箇所では内部的なタイムアウト(20分)が設定されており、ファイルの作成に20分を超えるとインストールが失敗(Execution Timeout Expired)します。 tempdbの初期サイズが変更できる新機能ではありますが、それ故に大きなサイズを指定してインストールが失敗する事がないように、事例としてご紹介させて頂きます。 事象 SQL Server 2017 のインストール時に大きい tempdb のファイルサイズを指定した場合、セットアップが失敗する事がある。 //エラー画面 //Message全文 The following error has occurred: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. //ログ抜粋 C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\Log\yyyymmdd_hhmmss\Detail.txt…


SQL Server AlwaysOn フェールオーバー クラスター インスタンス 環境に .NET Framework 4.6 をインストール後、メンテナンスプラン から SQL Server への接続に失敗する

高原 伸城 Support Escalation Engineer   皆さん、こんにちは。 BI Data Platform サポートチームの 高原 です。 今回は、SQL Server AlwaysOn フェールオーバー クラスター インスタンス 環境に .NET Framework 4.6 をインストール後、メンテナンスプラン から SQL Server への接続に失敗する問題について紹介します。   SQL Server AlwaysOn フェールオーバー クラスター インスタンス環境 (以下 SQL Server AlwaysOn FCI) で、かつ、名前付きインスタンスをインストールした環境に、.NET Framework 4.6 をインストールすると、メンテンナンス プラン 及び syspolicy_purge_history ジョブ から 該当の名前付きインスタンスに接続しようとした際に、以下のエラーにより、接続に失敗するという現象が発生します。 この問題は、スタンドアローン環境 及び SQL Server AlwaysOn…


HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法

  神谷 雅紀 Escalation Engineer   「ログファイルが大きくなってディスク領域を圧迫し始めているので、ファイルサイズを小さくしたい」という内容の問合わせは今でも多く寄せられます。今回は、SQL Server Management Studio GUI を使って、トランザクションログファイルのサイズを小さくする手順を紹介します。 ここに記載した方法で、トランザクションログファイルのサイズを小さくしたいという状況のほとんどに対応可能だと思います。 ここに記載した方法でトランザクションログファイルのサイズを小さくできない場合は、おそらく、トランザクションログファイルのサイズを小さくする前に、レプリケーションやミラーリングのトラブルシューティングなどが必要になるでしょう。   ステップ 1 : データベースの復旧モデルを確認する 復旧モデルが「単純」かそれ以外かによって、以降の手順が違ってきますので、まず最初に、データベースの復旧モデルを確認します。 手順 復旧モデルを確認するために、データベースのプロパティを表示します。データベースのプロパティは、オブジェクトエクスプローラでデータベース名を右クリックし、「プロパティ」をクリックすることで表示できます。 表示されたダイアログボックスの左ペインで「オプション」を選択すると、右ペインに「復旧モデル」が表示されます。復旧モデルは、「単純」「完全」「一括ログ」のいずれかです。   ステップ 2 : トランザクションログをバックアップする トランザクションログは、データベースファイルへの更新履歴ですので、データベースに対して更新を行うたびにトランザクションログファイルには履歴データが記録され、何もしなければ、トランザクションログファイル内の履歴データはどんどん増えていきます。 復旧モデルが「単純」の場合は、トランザクションログファイル内のデータ量が一定量を超えると、SQL Server がファイルの中身を消し、ファイル内に空き領域を作り、空いた領域は再利用されます。 一方、復旧モデルが「完全」または「一括ログ」に設定されている場合は、過去に一度でもデータベースの完全バックアップ (データベースフルバックアップ) を取得していると、SQL Server はファイルの中身を消すことはしませんので、トランザクションログファイル内のデータは、バックアップしなければ削除されません。 このステップ 2 は、復旧モデルが「完全」または「一括ログ」の場合のみ行います。「単純」の場合は、次のステップ 3 に進みます。 手順 データベースを右クリックし、「タスク」 –  「バックアップ」をクリックします。 「バックアップの種類」として「トランザクションログ」を選びます。もし、復旧モデルが「単純」に設定されている場合は、「トランザクションログ」は選択できません。 「バックアップセットの有効期限」は既定のまま、「バックアップ先」は、バックアップデータを書き込むファイル名を指定します。「ディスク」を指定して、「追加」でファイル名を指定して下さい。そのサーバーにテープデバイスがある場合には、「テープ」を選んでも構いません。 最後に「OK」を押すと、バックアップが開始されます。   復旧モデルが「完全」または「一括ログ」であっても、データベースの完全バックアップが一度も取得されていない場合、トランザクションログのバックアップは以下のエラーで失敗します。   メッセージ 4214、レベル 16、状態…

4

イベントログに SQL Server 関連のパフォーマンス ライブラリで 警告 2003 が発生した場合の対処方法について

高原 伸城 Support Escalation Engineer   皆さん、こんにちは。 BI Data Platform サポートチームの 高原 です。 今回は、イベントログに SQL Server 関連のパフォーマンス ライブラリで 警告 2003 が発生した場合の対処方法について紹介します。   Microsoft-Windows-Perflib: 警告: 2003: “MSSQLSERVER” サービスのパフォーマンス ライブラリ “perf-MSSQLSERVER-sqlctr**.*.****.*.dll” の構成情報が、レジストリに保存されている信頼されたパフォーマンスライブラリの情報に一致しませんでした。このライブラリの関数は信頼されているものとして処理されません。   [原因] SQL Server のパフォーマンス ライブラリ “perf-MSSQLSERVER-sqlctr**.*.****.*.dll” のファイル作成時刻やファイルサイズが、レジストリに格納されている情報と一致していない場合に発生します。   [影響] 前述の通り、情報のズレを報告するために記録される警告ですが、実動作 (パフォーマンス カウンタの採取など) への影響はありません。   [対処方法] SQL Server のパフォーマンス ライブラリ を再登録することで、警告 2003 は解消します。   #…


SQL Server/Azure SQL Database で使用可能なデータの暗号化機能について

高原 伸城 Support Escalation Engineer   皆さん、こんにちは。 BI Data Platform サポートチームの 高原 です。 今回は、SQL Server/Azure SQL Database で使用可能なデータの暗号化機能について紹介します。   SQL Server/Azure SQL Database で使用可能なデータの暗号化機能として、以下の機能があります。 今回は、透過的なデータ暗号化(TDE : Transparent Data Encryption)について紹介します。 ■ 透過的なデータ暗号化(TDE : Transparent Data Encryption) ■ 暗号化関数 ■ Always Encrypted   メモリ データ/トランザクションログ (ストレージ) 透過的なデータ暗号化 平文状態 暗号化を有効化したデータベースの全データが暗号化状態 暗号化関数 暗号化指定した列は暗号化状態 暗号化指定した列は暗号化状態 Always Encypted 暗号化指定した列は暗号化状態 暗号化指定した列は暗号化状態  …


Windows インストーラーでイベント 1004/1001 が発生し、SQL Server 関連コンポーネントが繰り返し再構築される現象 及び 回避策 について

高原 伸城 Support Escalation Engineer   皆さん、こんにちは。 Microsoft SQL Server/Microsoft Azure SQL Database サポートチームの 高原 です。 今回は、Windows インストーラーでイベント 1004/1001 が発生し、SQL Server 関連コンポーネントが繰り返し再構築される現象 及び 回避策について紹介します。   Windows Update で .NET Framework の更新プログラムを適用後、イベントログ (アプリケーション) に、Windows インストーラのイベント 1004/1001 が繰り返し発生し、該当サーバーの CPU 使用率が高くなるという現象が報告されています。 [1004] 製品 ‘{7842C220-6E9A-4D5A-AE70-0E138271F883}’、機能 ‘SDK_Full’、コンポーネント ‘{5459C63B-8203-43FD-9C96-9D643FD17EF0}’ の検出に失敗しました。リソース ‘D:\’ がありません。 [1001]製品 ‘{7842C220-6E9A-4D5A-AE70-0E138271F883}’、機能 ‘SDK_FNS’ の検出は、コンポーネント ‘{30DC367C-77F2-4EB1-8661-7B2CC3714758}’ を要求するときに失敗しました   上記のメッセージは、 Windows…


既存の SQL Server ライセンスを使用し、Azure 仮想マシン上に SQL Server をインストールするためには。

高原 伸城 Support Escalation Engineer   皆さん、こんにちは。  BI Data Platform サポートチームの 高原 です。 ※ BI Data Platformサポートチーム では、Microsoft SQL Server/Azure SQL Database/BI Azure などの製品をサポートしています。 今回は、既存の SQL Server ライセンスを使用し、Azure 仮想マシン上に SQL Server をインストールするために必要な契約について紹介します。   既存の SQL Server ライセンス を Azure 仮想マシン上の SQL Server で使用するためには、ソフトウェア アシュアランス (Software Assurance) の契約が必要となります。   SQL Server Azure VM の料金ガイダンス + ライセンスを持ち込む…


SQL Server における分散トランザクション 3

  神谷 雅紀 Escalation Engineer   以下の投稿で、分散トランザクションの開始から終了までの動作を説明しました。   SQL Server における分散トランザクション 1 SQL Server における分散トランザクション 2   本投稿では、分散トランザクションに関連するその他の一般的なトピックについて説明します。   MSDTCを動作させるために必要な設定   MSDTCを動作させるために必要な設定について https://blogs.technet.microsoft.com/jpiis/2018/02/05/msdtc-settings/   ロック所有者 session_id (SPID) –2   MS DTC トランザクションにエンリストしているセッションがない場合、sys.dm_tran_locks 動的管理ビューでは、そのトランザクションが所有しているロックの所有者 session_id が –2 と表示されます。実際に –2 というセッションが存在する訳ではなく、そのロックに紐づくセッションがないために、便宜的に –2 という値を使用しているだけです。 以下の例では、4) と 5) の間、7) から 8) の完了までの間、-2 がこの分散トランザクションによって獲得されたロックの所有者として表示されます。   1) トランザクション開始 2) セッション 51…


Known Issue: Microsoft JDBC Driver for SQL Server を使った接続が「SQL Server が不完全な応答を返しました。」のエラーで失敗する。

  SQL Developer Support Escalation Engineer 高橋 理香   みなさん、こんにちは。 最近お問い合わせいただくことが多い事象がありますので、今回はその内容をご紹介したいと思います。   事象 Java アプリケーションから Microsoft JDBC Driver for SQL Server を使用して SQL Server に接続するアプリケーションがある。このアプリケーションからの接続時に以下のエラーが発生することがある。 com.microsoft.sqlserver.jdbc.SQLServerException: ドライバが SSL (Secure Sockets Layer) 暗号化による SQL Server への安全な接続を確立できませんでした。エラー: SQL Server が不完全な応答を返しました。接続が閉じられました。。   対象環境/アプリケーション 上記事象が発生する条件として以下の特徴があります。 Windows Server 2012 R2 に Windows Server 2012 R2 Update1 (2919355) をインストールした環境上で動作する Java アプリケーションから Microsoft…