先日、KB2969896 の情報が公開されました。
対応の詳細については SQL Server 2012 のインデックス再構築処理でデータ損失の可能性 / Hotfix for SQL Server 2012 Online Index Rebuild Issue に詳しく記載されていますが、上記の KB では SQL Server 2012 SP1 / SP2 用の修正プログラムが提供されており、2014/6/21 時点の SQL Server 2012 の場合は、SP1 + KB2969896 または SP2 + KB2969896 を適用することでこの問題に対しての修正をすることができます。
Non SP 向けの修正プログラムは提供されていないため、SP1 or SP2 の適用が前提となります。
# SQL Server 2014 については CU2 待ちとなるようです。
→ CU2 がリリースされました。?Microsoft SQL Server 2014 用の累積的な更新プログラム パッケージ 2
![]()
Read the rest of this entry »
SQL Server 2012 の KB2969896 の適用
db tech showcase 大阪 2014 で登壇させていただきました
昨日、db tech showcase 大阪 2014 で [SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ] という内容で、SQL Server の情報取得についてお話をさせていただきました。
久しぶりに 2 コマ分の時間で話をさせていただいたのですが、100分は意外とあっという間ですね~。
セッション資料については OneDrive で公開させていただきましたので、興味のある方がいらっしゃいましたらご覧いただければと思います。
SQL Server 2014 の遅延持続性による WRITELOG 事象への影響
SQL Server 2014 では 遅延持続性 (低速コミット) の機能が追加されています。
トランザクションの持続性の制御
遅延持続性については全エディションで使用できる機能となっています。
SQL Server 2014 の各エディションがサポートする機能
SQL Server の通常の動作としては WAL (先行ログ書き込み) により、データファイルの書き込みより、ログレコードの書き込みが優先され、トランザクションの変更履歴の確定が優先されることになります。
トランザクションを完了するためには、ログレコードがログバッファからディスクに書き込まれデータが永続化される完全持続性が担保されることが必須となります。
# DDL 系の操作についてはコミット→ロールバックをした場合、ディスクには書き込まれない等の動きがあったはずでこの辺もなかなか奥が深いですが。あと 錦の鬼 って強そうですね。
SQL Server の負荷かけツール
RDS for SQL Server の Multi-AZ の仕組みを調べてみる
先日、RDS の SQL Server で Multi-AZ の機能がサポートされました。
【AWS発表】Amazon RDS for SQL ServerでもMulti-AZ機能を利用可能に
Amazon RDS for Microsoft SQL Server
Multi-AZ 配置
構築方法などは、【速報】Amazon RDS for SQL ServerがMulti-AZをサポートしたのでやってみた が参考になります。
どのような仕組みで実装されているのかが気になったので試してみました。
データ読み取りと CPU の利用について
最近のハードウェアはディスク性能が向上して、ディスク I/O がネックになることも少なくなってきたかと思います。
ディスクが高速になることで大量のデータを短時間で読み取れるようになりましたが、その分負荷が CPU に表れてくることになったかと。
簡単にではありますがこの辺のデータをとってみたいと思います。
SQL Server 2012 以降で実行プランから並列化されていない理由を確認
最近、実行プランを見ていて気づいたのですが、SQL Server 2012 以降では実行プランに [NonParallelPlanReason] という情報が増えていたようです。
詳細については、SQL Server 2012 Execution Plan’s NonParallelPlanReason が参考になります。
RD GW on Azure を構築してみる
Azure の仮想マシンではエンドポイント経由でリモートデスクトップ接続をすることができます。
下の画像では 62888 としていますが、外部向けのエンドポイントに割り当てられているポート経由で、仮想マシンの 3389 に接続し、リモートデスクトップを使用することができます。
セキュリティの要件によっては、各仮想マシンの外部向けのエンドポイントでのリモートデスクトップの接続は許可せずに、内部 IP を使用したリモートデスクトップ接続のみ許可するという要件があるかもしれません。
このような場合は RD GW (リモートデスクトップゲートウェイ) を使用するとよいかと思います。
RD GW を使用することで、外部向けには RD GW の TCP 443 (HTTPS) のみを開放していれば仮想マシンに接続することができるようになります。
今回は以下のような RD GW と接続したい VM が同一となっている仮想ネットワークを作成して RD GW on Azure を構築してみたいと思います。
以前投稿した、カスタムスクリプトを使用して仮想マシンをギャラリーから展開時に日本語 UI を設定 で日本語化した VM を 2 台構築した状態から設定をしてみます。
PowerShell から SQLCMD.exe で SQL を実行
PowerShell から SQL Server に SQL を実行する場合、データベース エンジン PowerShell を使用することがあるかと思います。
ほかにも System.Data.SqlClient を使用した方法 (Windows PowerShell: Windows PowerShell からデータベースにアクセスする) や、SQLSMO を使用した方法 (Using PowerShell with SQL Server Management Objects (SMO)) もあります。
今回は、データベースエンジン PowerShell の Invoke-Sqlcmd を sqlcmd.exe に置き換えた際のメモを。
以下の情報を参考にさせていただいています。
SQL2005のSQLCMDオプションについて質問
Passing varibles with special characters and or embedded spaces in powershell 2.0 with SQL Server
How to stop the “Changed database context to …” message
PowerShell で特定の IP の NIC でリモートデスクトップのポートをバインドする
複数の NIC を接続していて、特定の IP を設定している NIC でリモートデスクトップのポートをバインド (リッスン) するためのサンプルです。
詳細については 影響を受けてある製品のいずれかを実行しているコンピュータのリモート デスクトップ セッションは確立できません。 を参照していただくとよいかと。
Read the rest of this entry »