SQL Server 2014 の環境でテストをしていますが、基本的には 2005 から同様な動作だったはずです。
エディションの違いによる機能比較はこちらを。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
SQL Server 2014 の環境でテストをしていますが、基本的には 2005 から同様な動作だったはずです。
エディションの違いによる機能比較はこちらを。
AlwaysOn 可用性グループと TDE (透過的なデータ暗号化) の組み合わせ方法について少しまとめてみたいと思います。
BOL としては 暗号化されたデータベースと AlwaysOn 可用性グループ (SQL Server) に記載されているのですが、これだと少しわかりずらいので。
データベースが暗号化されているか、データベース暗号化キー (DEK) を含んでいる場合、新しい可用性グループ ウィザード または 可用性グループへのデータベース追加ウィザード を使用してそのデータベースを可用性グループに追加することはできません。
とありますが、これは可用性グループのウィザードを使用して設定ができないということを表しており、AlwaysOn 可用性グループと TDE を組み合わせることは可能です。
細かな手順については Encrypting Your SQL Server 2012 AlwaysOn Availability Databases がとても参考になります。
twitter で質問をいただいたので少しまとめてみたいと思います。
SQL Server / SQL Database では、数値型の連番を簡単に設定するためのプロパティとして IDENTITY があります。
これを設定しておくと自動的に連番が付与されますが、サーバーの再起動等が発生した場合には連番は保証されません。
これについては
IDENTITY (プロパティ) (Transact-SQL)
IDENTITY プロパティ使用時の動作について
に記載されています。
SQL Server 2012 以降は、IDENTITY の説明として以下が追加されています。
サーバーの再起動または他のエラーが発生した後の連続した値: SQL Server では、パフォーマンス上の理由から ID 値をキャッシュすることがあります。割り当てられた値の一部は、データベースの障害やサーバーの再起動が発生したときに失われることがあります。 その結果、挿入時に非連続的な ID 値が生成される場合があります。 非連続的な値が許可されない場合、アプリケーションでは、シーケンス ジェネレーターを NOCACHE オプションを指定して使用するか独自のメカニズムを使用して、キー値を生成する必要があります。
この動作について少し見ていきたいと思います。
SQL Server の可変長文字列 (varchar / nvarchar) では、
というような文字列をデータとして登録した場合、可変長文字列では
というように設定されている文字列のみが登録されます。
char(10) というような固定長文字列型にデータを入れた場合には、
といった形で空白が付与されて固定長文字列として処理がされます。
それでは、
というようなデータに空白が含まれるものを入れた場合にはどうなるかを本投稿で見ていきたいと思います。
SQL Server 2014 としていますが、SQL Server 2005 SP1 以降であれば、おそらく使えるのではと思っています。
# SQL Server 2008 は CU3 以降かもしれませんが…。
以下の情報も参考になります。
Automating Deployment of SQL Server Maintenance Plans
SSIS package query
SSIS Package Extract from MSDB
How to Transfer(Copy) Maintenance Plans from One Server to other???….
SQL Server 2014 データベース エンジンの非推奨機能SQL Server ではバックアップのリストアに下位互換があり、リストアしようとするバックアップを取得した SQL Server のバージョンにも依存するのですが、上位のバージョンでは下位のバージョンのバックアップをリストすることが可能です。
上位互換はないため、新しいバージョンで取得したバックアップを下位のバージョンにリストアすることはできません。
また、デタッチ / アタッチシナリオを利用して、データベースを新しいバージョンの SQL Server にアタッチした場合、アタッチしたタイミングでデータベースの内部のバージョンアップが行われています。
そのため、新しいバージョンでアタッチしたデータベースを下位のバージョンの SQL Server にアタッチするということもできません。
新しいバージョンに移行をした際の、切り戻し方法としてはデータベースのバックアップ / リストア、デタッチ / アタッチではなく、データベースのインポート / エクスポートを用いて実施する必要があります。
基本的には直近三世代のバージョンの SQL Server のバックアップをリストアすることが可能となっており、それ以前の世代のバックアップについてはリストアをすることができません。
簡単にではありますが、バックアップ / リストアについてまとめてみたいと思います。
本投稿では、
で取得したバックアップを
でリストアするパターンについて記述しています。
テーブルのデータを瞬時に削除する方法として、TRUNCATE TABLE があります。
DELETE との違いは以下になります。
DELETE ステートメントは、一度に 1 行ずつ削除し、削除した各行のエントリをトランザクション ログに記録します。 TRUNCATE TABLE は、テーブル データを格納するのに使用するデータ ページの割り当てを解除することによってデータを削除し、ページの割り当ての解除だけをトランザクション ログに記録します。
ということで、TRUNCATE TABLE が何をやっているかをざっくりと。
SQL Server のクエリチューニングをする際に参考になる情報のメモを。
TechNet フォーラムに SQL Server のインストール失敗の質問がありましたので、私が同様の現象に遭遇した場合にはどうするかと考えながら、少しまとめてみたいと思います。
統計情報の更新は UPDATE STATISTICS で実行することができますが、更新の際にはサンプリングの数を設定することができます。
このサンプリングの設定と統計情報更新時の実行プランについて、まとめてみたいと思います。