web-dev-qa-db-ja.com

SQL Server 2016を以前のバージョンよりも優先する客観的な理由は何ですか?

MicrosoftはSQL Server 2005または2008日以降、SQL Serverバージョンのアップグレードをより頻繁に行っているため、多くの企業は、アップグレードが「必須」であることを判断するのが難しいと感じています。アップグレードが「いい」の場合

以前のバージョンよりもSQL Serverのさまざまな新しいリリースを好む理由について尋ねるいくつかの以前の質問の精神に基づいて、企業が以前のバージョンよりもSQL Server 2016へのアップグレードを検討する際に考慮すべきいくつかの客観的な技術的またはビジネス上の理由は何かSQL Server 2014などのリリース

(この 質問 SQL Server 2008と比較したSQL Server 2012について、または これ) SQL Server 2005と比較したSQL Server 2012について、この質問の精神の例として頭に浮かびます。それらに対する答えは、SQL Server 2008またはSQL Server 2005を開始する企業にとってのいくつかの理由にも当てはまります)

29
Mike Walsh

SQL Server 2016へのアップグレードを検討する理由はたくさんあります。ほとんどの場合、これらの理由は、SQL Serverのバージョンによって異なります。これは完全なリストではありませんが、頭に浮かぶいくつかの理由を挙げます。 2016年11月のSQL Server 2016 SP1のリリースで学んだ非常に大きな理由を1つ挙げます。見逃した拡張や機能に対する他の回答を楽しみにしています。

大きな理由:Standard Editionで利用できる多くの機能

2016年11月16日、MicrosoftはSQL Server 2016のService Pack 1のリリースを発表しました。この発表とともに、Enterprise Editionのお客様向けに以前に予約されていた多くの機能がallSQL Serverのエディション-Enterprise Editionに加えて、Standard、Express(一部例外あり)、Web。

これは、SQL Serverバックエンドを備えたソフトウェアを開発および販売するソフトウェアベンダーにとってアップグレードの非常に説得力のある理由になるはずです。SQLServerのライセンスエディションに関係なく、顧客は多くの機能を利用できるようになりました。これはまた、時間の経過とともに製品に追加された監査またはその他のセキュリティ強化を維持する必要があるセクターの企業にとっても魅力的です。

私の控えめな意見では、SQL Serverでの作業の17年以上の間に、これはSQL Server 2016 SP1をバージョン6.5でSQL Serverでの作業を開始して以来、最も魅力的なアップグレードにしています。 (誤解しないでください。2000年、2005年、2012年には、彼らの時代にも長所がありました!)

以下のリストを見てください。ただし、Standard Editionで使用できる機能の簡単な例として、圧縮、変更データキャプチャ、ファイングレイン監査、行レベルのセキュリティ、常に暗号化、パーティション化、データベースがあります。スナップショット、インメモリOLTP、列ストア。

SQL Server 2016の新機能の特定の理由

このセクションの理由は、SQL Server 2016でのみ導入された機能に留めておきます。また、この回答ではコアエンジンの機能強化についてのみ説明し、レポート、分析、データ統合などについては説明しません。

セキュリティ関連

行レベルのセキュリティ-行ごとにセキュリティを実装できるようにしたい多くのクライアントがいます。 「ユーザーxはこの行のデータを表示できますが、その行は表示できません」。これらのクライアントの多くは、これを実現するための関数や複雑なビューベースの構造を作成しています。 SQL Server 2016には、ここで支援するために利用できる組み込みの述語とセキュリティポリシーがあります。 RLS here についての詳細を読むことができます。

ダイナミックデータマスキング-これは紙の上では素晴らしいように聞こえますが、セキュリティ領域の他の2つの変更よりも有用性が低いかどうかはわかりません。基本的に、呼び出し元の権限に基づいて、クエリ時にデータを動的にマスクまたは難読化できます。難読化されるデータの量は、プログラム可能なものです。たとえば、Microsoftが使用する例では、クレジットカード番号の最後の4桁を除くすべてをマスクして、コールセンターのコールテイカーが最後の4桁を確認できるようにすることができます。詳しくは こちら をご覧ください。

Always Encrypted-おそらく、透過的データ暗号化に関するいくつかの欠陥や懸念について聞いたことがあるでしょう。 SAアクセス権を持つユーザーが確実に必要に応じて解読できることを恐れてTDEを使​​用したくない場合があります。AlwaysEncryptedは、解読/暗号化機能を手に入れる機能としてリリースされましたSQL Serverを呼び出すアプリケーション。SQLServerに保存されているデータは暗号化されます。SQLServerに向かう進行中のデータも、このアプローチの結果として暗号化されます。AlwaysEncrypted here の詳細をご覧ください。

HA/DR機能

いくつかの機能がここに出てきました。 1つは、SQL Server StandardのAlways On可用性グループを使用する機能です-基本可用性グループ。これは、ミラーリングが廃止され、代替がなかったために必要でした。この機能は、レプリカの数と同期の方法に制限されています。あなたはもっと読むことができます ここ

(ちなみに、SQL Server 2012で導入された)可用性グループに対する唯一の変更ではありません。他にもいくつかの変更があります(他の変更へのリンクを含む完全なリストを見ることができます here ):

  1. グループ管理サービスアカウントがサポートされています。
  2. 分散トランザクションがサポートされています(一部の 警告 を使用)。
  3. 読み取りインテント接続は、読み取り専用レプリカ間で負荷分散できます。
  4. 3つのレプリカが自動フェイルオーバーに関与できるようになりました。
  5. 暗号化されたデータベースは、Always On可用性グループに参加できるようになりました。
  6. パフォーマンスの改善-SQL Server 2016のテーマの一部は「それはより速い」です-これはMicrosoftマーケティングのスピンですが、市場で証明されています。可用性グループのパフォーマンスにいくつかの改善が加えられました。

インストーラーはいくつかの一般的な間違いを修正します

SQL Server 2016以降のSQL Serverインストーラーは、TempDBの構成時に発生するいくつかの一般的な間違いを修正します。セットアップGUIは、ベストプラクティスの構成をガイドします。

クエリストア

SQL ServerのMVPとチューナーのお気に入り。この機能は、エンジンがクエリを実行する方法についての洞察を提供するツールです。時間の経過に伴うクエリプランの変更によって引き起こされるパフォーマンスの問題を追跡するのに特に役立ちます。これは表示するためのツールですが、修正するためのツールにもなります。いくつかのパフォーマンス調整の概念を簡略化するのに役立ちます。詳しくは こちら をご覧ください。

テンポラルテーブル

「このデータはこのような日付でどのように見えたのか」というような質問をする必要がよくあります。テンポラルテーブルは、そのための1つの方法です。確かにいくつかの倉庫保管ユースケースがあります。詳細はこちら こちら

列ストアの改善

ここで2つの大きな改善点のうち、3つの大きな改善点があります。 1つは、更新可能な非クラスター化列ストアインデックスです。 SQL Server 2014では、更新可能なクラスター化が提供されていましたが、現在は更新可能なクラスター化されていません。 SQL Server 2016では、インメモリの列ストアインデックスも使用できますOLTP=テーブル。また、クラスター化された列ストアインデックスに従来のBツリー非クラスター化インデックスを配置する機能がSQL Server 2016に追加されました。

インメモリOLTPのその他の機能強化

インメモリテーブル内またはネイティブにコンパイルされたプロシージャでサポートされていなかった機能のいくつかが利用可能になりました。いくつかの追加(ただし、詳細については この記事 を参照):UNIQUE制約、チェック制約、DMLのOUTPUT句、外部結合、選択リストのサブクエリ、SELECT DISTINCT、UNION/UNION ALLなど。

一般的なパフォーマンスの改善

SQL Server 2014では、各リリースと同様に、いくつかの主要な領域でパフォーマンスが向上しました。 SQL Server 2016では、製品全体で追加の重要な機能強化が行われました。これには、カーディナリティエスティメータの変更が原因でSQL Server 2014にアップグレードするときにときどき発生する問題の多くを、多くのお客様が解消することが含まれます。エンジンの上下にいくつかの変更が行われ、日常のパフォーマンスが向上しました。 MicrosoftのCSSチームは、これについてブログでブログを書いています。 「SQL Server 2016はより高速に実行されます」で検索できます。このシリーズのブログ投稿の例は here です。

これはアップグレードしたクライアントで見られ、ますます見られることを期待しています。

いくつかの短所

すべてのアップグレードには明らかに短所があります。コンサルタントとして生活するためにこれを行うためかもしれませんが、短所はすべて信じられないほど管理可能であり、実際に認識して管理するために「コストを最初に数える」項目と見なすだけです。

一般的なアップグレード-一般的なアップグレードは、新しい機能を導入することを意味します。それらをテストできる必要があります。 SQL Serverのバージョン間で、さまざまな機能が非推奨になりました。これは、彼らがすぐになくなることを意味しませんが、将来のリリースで可能になることを意味します。たとえば、TEXTデータ型、またはSQL Server 2000互換モードで実行されているデータベースからの場合、*=または=*構文を使用したwhere句で外部結合を実行することはサポートされていません。互換モードと言えば、これらのバージョンは3つのバージョンだけに戻ります。したがって、80(SQL Server 2000)または90(SQL Server 2005)の互換モードで実行されているデータベースがある場合、そのようなSQL Server 2016には移行できません。そのため、そのテストを行わずに互換性レベルをこっそりと回避している場合は、計算の時間です。

再び。それは簡単なことです。データをキャプチャしてテストし、何が壊れているかを確認するのに役立つツールがあります。非推奨の機能を探すのに役立つperfmonカウンターがあります。

Licensing-ここに2つのこと:

  1. コアベース-SQL Server 2012以前のライセンス条件に慣れている場合、CPUライセンスはCPUライセンスのみでした。 SQL Server 2012以降、CPUベースのライセンスはコアに基づいています。そこで調整期間があります。また、新しいライセンス用のエンタープライズ(2012が最初にロールアウトされたときに行われたいくつかの例外を含みます)コアレベルでライセンスを取得する必要があります-サーバーなし+エンタープライズ用CAL 。このクラウドの輝く銀の裏地は、SP1でエンタープライズ以外のSKUにエンタープライズ機能を許可することについて述べたものです。 128GB以上のRAMが必要な場合。高度なスキャンのパフォーマンス向上が必要な場合。 32GBを超えるRAM for columnstoreまたはIn-Memory)が必要な場合は、Enterpriseを検討しています。不要な場合は、オンラインインデックスの再構築は必要ありません。Standardでは、あなたのために、そしてあなたが新しく利用できるそれらの機能を備えた今あなたのためにもっとあるかもしれません。
  2. ソフトウェアアシュアランス(SA)-SAを購入していない場合は、新しく購入する必要があります。したがって、SQL Server 2005を実行していて、メインストリームのサポートが終了していて、延長サポートの終了からそれほど遠くないと心配していて、機能が利用できるようになれば、Service Packのようにアップグレードすることはできません。 SAを購入したことがない場合、アップグレードは新規購入です。それは大丈夫です、それは本当にそれだけの価値があります。しかし、それは予算を上回らなければならないものです。

概要

JSONのサポート、Rの導入など、他にも多くの理由がありますが、これらは私がアップグレードを検討する理由の一部にすぎません。最も重要な項目は、これまでと同じように、StandardやExpressでも以前のEnterprise Editionのみの機能の多くを使用できることです。私はクライアントの間で大きな成功事例を見てきましたが、もっと見たいと思っています。

SQL Server 2005または2008を使用している場合、リストはさらに大きくなります。 AlwaysOn可用性グループは2012年にリリースされました。SQLServer 2012の列ストアインデックス、インメモリOLTPなど)。

SQL Server 2005または2008を使用している場合は言うまでもありませんが、主流のサポートは終了しています。

35
Mike Walsh