Quantcast
Channel: Microsoft SQL Server Japan Support Team Blog
Viewing all 293 articles
Browse latest View live

[SQL Server/IaaS] 接続の暗号化に使用可能な証明書について

$
0
0

皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチーム の高原です。

今回は、SQL Server (Windows Azure 仮想マシン上の SQL Server 含む) への接続の暗号化 (SSL) に使用可能な証明書について紹介します。

  

まず初めに、SQL Server への接続の暗号化に使用可能な証明書には、以下のものがあります。

 

  1. 認証局 (CA) が発行した SSL 証明書
  2. 自己署名入り SSL 証明書

 

SQL Server では、起動時に自己署名入り SSL 証明書を自動的に作成しています。 そのため、証明書を明示的にインストールしなくとも、SQL Server がインストールされたサーバー上で SQL Server 構成マネージャ を起動し、SQL Server ネットワークの構成 – <インスタンス名> のプロトコル - 右クリック - プロパティ を開き、フラグ タブ – “強制的に暗号化”“はい”を選択するだけで、自動的に作成される自己署名付き SSL 証明書が使用され、クライアント (WEB サーバー含む) 側で特に設定を実施しなくとも、クライアント から SQL Server への接続が、全て SSL による暗号化された通信で行われるようになります。

※ 設定変更後、SQL Server サービスの再起動は必要となります。

 

imageimage

 

暗号化通信の設定が行われていない場合、クライアント -  SQL Server  間の通信は、平文 (ネットワーク パケット上からデータを参照できる状態) で行われるため、セキュリティ強化の一環として、設定することは有効です。

しかしながら、自己署名入り SSL 証明書の場合、中間者攻撃(なりすまし) に対する保護は提供されないため、よりセキュリティを強固のものする必要がある場合は、認証局 (CA) で発行された SSL 証明書を使用することが望ましいでしょう。

補足の内容になりますが、認証局 (CA) で発行された SSL 証明書を使用するほうが、セキュリティ観点から言えば望ましいのですが、仮に、WEB サーバーは外部に公開し、SQL Server は 非公開ネットワーク (イントラ ネット) に設置されている場合は、お客様 クライアント  -  WEB サーバー間は、認証局 (CA) で発行された SSL 証明書で SSL 通信を行い、WEB サーバー – SQL Server 間は、自己署名入り SSL 証明書で SSL 通信を行うだけでも、セキュリティ強化になることが推測されます。

非公開ネットワーク 内に中間者攻撃用サーバーが設置された場合は、セキュリティの脅威となります。


 

なお、認証局 (CA) で発行された SSL 証明書 であったとしましても、以下の要件を満たしていない場合は、SQL Server への接続の暗号化に使用することができない点 について注意が必要です。

  1. 現在のシステム時刻が証明書の “有効期限の開始日” (Valid from プロパティ) から “有効期限の終了日” (Valid to プロパティ) までの範囲内であること。
  2. 証明書がサーバー認証として使用され、証明書の Enhanced Key Usage プロパティが Server Authentication (1.3.6.1.5.5.7.3.1) に指定されていること。
  3. 証明書が AT_KEYEXCHANGE の KeySpec オプションを使用して作成されていること
  4. 証明書の “Subject” プロパティで、共通名 (CN) が サーバー コンピュータのホスト名  または、完全修飾ドメイン名 (FQDN) と同一であること。 ただし、AlwaysOn フェールオーバー クラスター インスタンス の場合は、共通名 (CN) が 仮想サーバーの完全修飾ドメイン名 (FQDN) と同一であること。
  5. 証明書が ローカル コンピュータの証明書ストア - 個人 - 証明書にインストールされていること。

※ 使用予定の SSL 証明書が上記の 1、2、3 の要件を満たしているかにつきましては、証明書の発行元へ確認ください。

 

image

ファイル名を指定して実行 – mmc – ファイル – スナップインの追加と削除 – 証明書 - 追加 – コンピュータ アカウント - 次へ - ローカル コンピュータ - 完了 – OKと選択することにより、ローカル コンピュータ 上の証明書情報を確認することが可能です。

 

※ 本Blogの内容は、2014年4月 現在の内容となっております

 


IDENTITY プロパティ使用時の動作について

$
0
0

皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチーム の高原です。

今回は、SQL Server / Windows Azure SQL Database (以下 WASD) の何れでも使用可能な IDENTITY プロパティの動作について説明します。

 

[IDENTITY プロパティとは]

IDENTITY プロパティをテーブル列に指定した場合、追加した列では、行が追加 (Insert) される毎に、指定された増分の値を基に、自動的に ID 番号を採番することが可能になります。そのため、ID を自動的に採番したい場合、IDENTITY プロパティを使用することにより、番号を採番する仕組みをアプリケーション側で実装する手間を省くことができます。

 

[IDENTITY プロパティの制限事項]

IDENTITY プロパティは 非常に便利な機能なのですが、次の点が保証されていません。

 

1) 連続された ID 値が採番されることを保証していない。

パフォーマンス上の理由から 採番される ID 値がキャッシュ上に保持されているため、サーバーの再起動や、データベースの再起動が発生した場合、キャッシュ上に保持された ID 値が失われ、次回 行挿入時に、前回 挿入された値から非連続的な ID が生成される場合があります。

また、1つのトランザクション内で連続した値が必ず採番されることも保証されていないため、1 つのトランザクション内で連続した値を必ず採番する必要がある場合は、他のトランザクションから列の挿入が行われないよう、該当テーブルに対して、排他ロックを獲得するなどの対策が必要です。

 

2) 値の一意性を保証していない

値の一意性を保証していないため、ID 列の一意性を保証させるために、PRIMARY KEY 制約、UNIQUE 制約、または UNIQUE インデックスを使用して、一意性を強制する必要があります。

 

3) 値が再利用されることを保証していない

特定の挿入クエリが失敗 もしくは ロールバックされた場合、取得された ID 値は失われ、再度 生成されることはありません。

 

[補足]

特にお問い合わせの多い 1) 連続された ID 値が採番されることを保証していない。について補足します。

パフォーマンス上の理由から 採番される ID 値がキャッシュ上に保持されることを記載しましたが、例えば int 型の列に IDENTITY プロパティを指定した場合、キャッシュ上には 1000個の ID 値がキャッシュされます。(例: 1001 – 2000 など)

そのため、1005 までしか採番されていない状況時に、サーバーの再起動などによりキャッシュがクリアされると、次回の採番される値が 2001 からとなり、ID 値の連続性が損なわれます。

また、この動作は、SQL Server 2012 以降のバージョン、及び WASD で発生しうる現象となります。

※ SQL Server 2008 R2 以前のバージョンでは、ID 値をキャッシュしていないため、キャッシュ上の ID 値がクリアされる現象は発生しません。

WASD の場合、更新プログラムの適用やマシンの健全性を保つ目的で、内部的に フェールオーバーが行われるため、ID 値の連続性が損なわれる可能性があります。

 ※ その他 データ型については、表1 を参照ください。


 

データ型

 キャッシュされる ID 値の数

Tinyint

10

smallint

100

Int

1,000

Bigint

10,000

Decimal/numeric

 

 

有効桁数 (Precision) < 2

5

Precision < 4

10

 Precision < 6

100

 Precision < 8

1,000

 Precision >= 8

10,000

表1 : IDENTITY プロパティ使用時にキャッシュされる ID 値の数

 

[参考情報]

IDENTITY (プロパティ) (Transact-SQL)

※ 本Blogの内容は、2014年4月 現在の内容となっております

サーバー カーソル動作とクエリパフォーマンスとの関連性について

$
0
0

皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチームの 高原 です。

今回は、サーバー カーソル (Transact-SQL カーソル) の動作とクエリパフォーマンスとの関連性について説明します。

 

SQL Server では、以下の 4 種類の サーバー カーソル をサポートしています。

  • 静的カーソル (STATIC)
  • キーセット ドリブン カーソル (KEYSET)
  • 動的カーソル (DYNAMIC )
  • 順方向専用カーソル (FAST_FORWARD)

 

各カーソルの動作 (特徴) について簡単に説明します。

 

静的カーソル (STATIC)

・カーソル宣言 (DECLARE CURSOR) 時に指定したクエリ結果セットを、TempDB 上の 一時テーブル に保存

・フェッチ (FETCH) 時に、FIRST、LAST、RELATIVE などのフェッチ動作が使用可能

取得した結果セットの行の値がカーソル処理中に更新された場合でも、変更は結果セットに反映されない


 

キーセット ドリブン カーソル (KEYSET)

・カーソル宣言 (DECLARE CURSOR) 時に指定したクエリの結果セットの中で、一意となるキー値のみを TempDB 上の 一時テーブル に保存

・取得した結果セットの行のキー値以外のデータがカーソル処理中に更新された場合、変更が結果セットに反映される

・静的カーソル (STATIC) と 動的カーソル (DYNAMIC) の中間的なカーソル

 

動的カーソル (DYNAMIC)

・カーソル宣言 (DECLARE CURSOR) 時に指定したクエリ結果セットを、TempDB 上の 一時テーブル に保存しない

・カーソル処理中に 結果セット内の行に対して行われた変更が全て反映される

 

順方向専用カーソル (FAST_FORWARD)

・カーソル作成時のコストにより、動的カーソル (DYNAMIC) もしくは、静的カーソル (STATIC) のいずれかとして実装される

・動的カーソル として実装された場合は、動的カーソル と同様の動作となる

・静的カーソル として実装された場合は、静的カーソル と同様の動作となる

・フェッチ (FETCH) では、FETCH NEXT のみが使用可能

 

[補足]

カーソル宣言 (DECLARE CURSOR) 時、明示的に サーバー カーソル タイプ などを指定しなかった場合、 まずは動的カーソルとして扱われますが、動的カーソルが作成できない場合には、キーセットや静的カーソルになる可能性があります。

 

 

目的 1

1) カーソル操作中に、結果セット内の行に対して行われた変更を反映される必要がある場合

キーセット ドリブン カーソル (KEYSET) もしくは、動的カーソル (DYNAMIC) を選択する必要があります。

キーセット ドリブン カーソル もしくは、動的カーソル を選択した場合、フェッチ (FETCH) 時にユーザーテーブルに対する参照クエリが実行されます。

そのため、特に 動的カーソルの場合、カーソル宣言時に指定したクエリ内容が複雑な場合、1 回の フェッチ動作の処理に時間を要する可能性があります。

キーセット ドリブン カーソル の場合、TempDB 上の 一時テーブルに保持された キー値を基にして、ユーザー テーブルに対する参照が行われるため、動的カーソル と比較し、フェッチ動作の処理時間を短縮できることが期待できます。

しかしながら、 静的カーソル (STATIC) と比較すると、一般的にフェッチ動作の処理時間が長くなります。

また、キーセット ドリブン カーソル の場合、カーソル処理中に結果セット内のキー値に対する変更が行われたり、行が削除されたとしても、結果セット内のキー値によりフェッチ動作が行われます。

そのため、既に ユーザー テーブル上に存在しない行のフェッチ動作が行われた場合、該当する行をフェッチすることが出来ないため、@@FETCH_STATUS に “-2” のステータスが返されます。

 

目的 2

2) フェッチ (FETCH) 時の処理時間を短くしたい場合

静的カーソル (STATIC) を選択します。

静的カーソル では、カーソル宣言時に指定したクエリの結果セットを、TempDB 上の 一時テーブルにすべて保存します。

そのため、フェッチ動作時には ユーザー テーブル への参照は行われず、一時テーブルに保持された行を順番に取得するだけであるため、一般的に、フェッチ動作の処理時間が短くなります。

しかしながら、カーソル宣言時に指定したクエリの結果セット行数が多い場合、TempDB 上の 一時テーブルにデータを挿入するまでに時間を要したり、TempDB のデータベース物理サイズが大きく拡張される可能性があります。

 

目的 3

3) 1回目のフェッチ (FETCH) 動作までの時間を短くしたい場合

動的カーソル (DYNAMIC) を選択します。

動的カーソル の場合、カーソル宣言時に指定したクエリの結果セットを、TempDB 上の 一時テーブルに保存しないため、即座に 1 回目のフェッチ動作を実施することができます。

 

 

最後に、弊社によくあるお問い合わせの事象と一般的な対処方法を紹介します。

[事例1]

キーセット ドリブン カーソル (KEYSET) 、動的カーソル (DYNAMIC) を 使用したクエリ処理に時間を要する

 

[一般的な対処方法]

キーセット ドリブン カーソル  、動的カーソル の場合、一般的にフェッチ動作がボトルネックとなり、クエリ全体の処理時間が長くなることがあります。

そのため、カーソル処理中に結果セット内の行に対して行われた変更を反映させる必要がない場合は、静的カーソル (STATIC) に変更することにより、クエリ全体の処理時間を短くさせることができる可能性があります。

なお、結果セット内の行に対して行われた変更を反映させる必要がある場合は、カーソル宣言時に指定するクエリを単純化させることにより、クエリ全体の処理時間を短くさせることができる可能性があります。

 

 

[事例2]

複数スレッドから 静的カーソル (STATIC) を使用するクエリを並行して実行した場合、クエリ処理に時間を要する

 

[一般的な対処方法]

静的カーソル では、TempDB への読み込み、書き込み動作が多く行われるため、複数スレッドから並行して、静的カーソルを使用したクエリが実行されると、TempDB への処理がボトルネックとなり、クエリ全体の処理時間が長くなる可能性があります。

そのため、カーソル宣言時 や フェッチ時に時間を要していることが確認できた場合は、1 回の静的カーソルで取得されるデータ量を減らし、処理を分散させることにより、クエリ全体の処理時間を短くさせることができる可能性があります。

また、複数の CPU を搭載している環境の場合、以下の ブログを参照し、TempDB の物理データベースファイル数を増やすことを、検討してみてください。

 DO’s&DONT’s #17: やっておいた方がいいこと - tempdb データファイル数を CPU 数に一致させる

 


 

 

[参考情報]

カーソルの種類 (データベース エンジン)

DECLARE CURSOR (Transact-SQL)

FETCH (Transact-SQL)


 
※ 本Blogの内容は、2014年5月 現在の内容となっております

エラー “Windows 機能 (NetFx3) を有効にしている時にエラーが発生しました。 エラー コード : -2146498298” について

$
0
0

皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチーム の高原です。

今回は、Windows 8 以降の OS に、SQL Server 2014 をインストールした場合に、発生する可能性のある以下のエラーについて紹介します。

---

Windows 機能 (NetFx3) を有効にしている時にエラーが発生しました。 エラー コード : –2146498298

image

---

上記のエラーは、.Net Framework 3.5 が有効になっていない Windows 8 以降の OS で、SQL Server 2014 のインストールが行われた場合に発生する可能性があります。

なお、本エラーの対処策は、[Windows の機能の有効化または無効化]で、”.Net Framework 3.5 (.Net 2.0 および 3.0 含む)”のチェック ボックスをオンにし、事前に .Net Framework 3.5 を有効化した上で、SQL Server 2014 をインストールすることになります。

 

image

[補足]

SQL Server 2014 Express Edition (データベース エンジン のみ : SQLEXPR) をインストールする場合においても、.Net Framework 3.5 及び 4.5 の両方のバージョンが必要となります。

※ SQL Server 2012 Express Editoin (データベース エンジン のみ : SQLEXPR) の場合は、.Net Framework 3.5 もしくは 4.5 の何れかが有効になっていれば、インストールが行われていました。

 

そのため、SQL Server 2014 Express Edition (データベース エンジン のみ) を以下の条件下でインストールした場合、エラー  Windows 機能 (NetFx3) を有効にしている時にエラーが発生しました。 エラー コード : –2146498298”  が発生します。

---

- インストール環境が Windows 8 以降の OS

- インストール環境が インターネットに接続されていない

- .Net Framework 3.5 が無効化状態 かつ、今までに一度も 有効化されたことがない

---

なお、複数のお客様よりご要望を頂いているため、次期 サービスパックで、SQL Server 2014 Express Edition (データベース エンジン のみ : SQLEXPR)  の場合は、.Net Framework 4.5 のみ有効の状態でもインストールが行えるよう、変更することを検討しています。

 

※ 本Blogの内容は、2014年5月 現在の内容となっております

2014 年 5 月 SQL Server 最新モジュール

$
0
0

2014 年 5 月 20 日時点の SQL Server 最新モジュールです。

SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。
SQL Server 2008 は 2014 年 7 月 8 日にメインストリームサポートが終了します。CU17 が最後の累積的な更新プログラムとなります。

 

サービス
パック

更新プログラム

バージョン

リリース年月

SQL Server 2014

RTM

KB 2931693(CU1)

12.0.2342

2014/4

メインストリームサポート

SQL Server 2012

SP1

KB 2954099(CU10)

11.0.3431

2014/5

メインストリームサポート

SQL Server 2008 R2

SP2

KB 2938478 (CU12)

10.50.4305

2014/4

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2008

SP3

KB 2958696 (CU17)

10.00.5861

2014/5

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2005

SP4

KB 2598903 (OD)

KB 2716427 Reporting Services (MS12-070)

9.00.5295

9.00.5324

2011/8

2012/10

延長サポート
(2016/4/12 終了)

RTM : Release To Manufacturing (製品出荷版)
SP : Service Pack (サービスパック)
CU : Cumulative Update (隔月リリースの累積更新プログラム)
OD : On-Demand (オンデマンドリリースの累積更新プログラム)

SQL Server の更新プログラムの詳細については、SQL Server の更新プログラムを参照して下さい。

メインストリームサポート、延長サポートについては、マイクロソフトサポートライフサイクルを参照して下さい。

Troubleshooting Connectivity #7 - 接続タイムアウトエラーまでの時間は?

$
0
0

高橋 理香
SQL Developer Escalation Engineer

みなさん、こんにちは。
次は接続エラーを再度・・・と予告していたのですが、今回も接続タイムアウトについての情報を書きたいと思います。

接続タイムアウト値はどこで設定するのか

前回の「Troubleshooting Connectivity #6 - 接続タイムアウトは悪なのか?」に記載したように、接続タイムアウトの設定は、接続確立完了までに要する時間として許容する限界値を定めたものであり、かつ、障害が発生しているかを見極めるための時間の設定です。したがって、接続をしようとしている側 (アプリケーションやツール等) で設定するものであり、サーバー側で設定するものではありません。たとえば、サーバーがダウンしている場合を考えてみてください。接続相手がいない状態でリクエストを行うわけですから、もしサーバー側での設定があったとしたらそれは機能できませんね。

このように、接続タイムアウト値は接続をリクエストする際にそのリクエストを行う側がその接続に要してもいい時間を設定するものですので、基本的にはアプリケーションにてその設定を行うものとお考えください。

接続タイムアウト値はどのように働くのか

では、接続タイムアウト値を設定したはいいけど、指定した時間になったらちょうどでエラーになるのでしょうか。

残念ながらか、気が利いているのかは要件によるのですが、ちょうどの時間ではエラーにならないパターンがあります。
先に例にあげたサーバーがダウンしている場合がこのパターンに該当しますので、その動作について以下の2点の機能に分けて説明します。

A:    接続に使用するプロトコルの自動切り替え
B:    プロトコル自体のタイムアウトおよび再転送設定

A: 接続に使用するプロトコルの自動切り替え

SQL Server へアクセスするドライバーやプロバイダーの多くは、接続時には以下のように複数のプロトコルでの接続試行を行うよう設計されています。

image

ADO.NET の System.Data.SqlClient (.NET Framework Data Provider for SQL Server) を使用してリモートの SQL Server に接続する場合を例にすると以下の通りです。

1) TCP/IP プロトコルで接続試行する。
2) TCP/IP プロトコルによって OS レベルのセッション確立がタイムアウトした場合、名前付きパイプに切り替えて接続試行する。
3) 名前付きパイプによるセッション確立もタイムアウトした場合、接続タイムアウトと判断してエラーを返す。

これは、可能な限りサーバー側で待ち受けているプロトコルに応じて接続が可能となる確率をあげるために行っていることです。先に記載した「気を利かせている」機能ですね。
したがって、サーバーがダウンしている状況において接続試行すると、既定の設定ではこれらの2つのプロトコル分の処理が行われることになります。

※参考
System.Data.SqlClient のプロトコルに関する既定の動作については以下に記載があります。

SqlClient Default Protocol Order
http://blogs.msdn.com/b/adonet/archive/2010/04/18/sqlclient-default-protocol-order.aspx

B: プロトコル自体のタイムアウトおよび再転送設定

System.Data.SqlClient などの SQL Server に接続に使用されるドライバやプロバイダーでは、ソケット関数を呼び出して、その結果を待ってから接続タイムアウト時間を経過しているかどうかを判断する実装となっています。これは、ソケット関数の処理の完了までに要する時間が接続タイムアウト設定値には左右されないことを意味します。

また、TCP/IP プロトコルは双方向通信のプロトコルであり、何かリクエストを送信した場合にはその応答があるまで待つのが基本の動作です。そのため、接続先のサーバーが停止している場合、そのサーバーは応答できませんので、接続リクエスト元では来ない応答を待つことになります。

わかりやすい例をあげると、電話したら通話音は鳴るけれども誰も出ない状態があります。

image

みなさんは何コールくらいで電話を切りますか?また、何回くらいかけてみて誰も出なければ不在なのだろうと考えますか?

私は 10コールで切ってすぐに1回かけなおし、5-10分おいて1回かけたら不在、そんなところです。

Windows では、サーバーからの応答の待ち時間 (タイムアウト) は初回 3秒、再試行回数は既定で 2回で設定されています。また、再試行時には前回の倍の秒数を待ちます。したがって、ソケット関数がタイムアウトするまでには 3 + 6 + 12 = 21 秒を要することになります。上位層ではこの完了までを待つため、例えば System.Data.SqlClient で接続タイムアウト値を 5秒にしていたとしても、21秒は待つことになります。

名前付きパイプの場合も、サーバーが停止している状態では、接続のリクエストのパケット送信によるセッション確立からの開始になるため、TCP/IP の場合と同様のタイムアウト値となります。

接続タイムアウトのエラーまでの時間を制御できるか

先の Aおよび Bの機能により、接続タイムアウトまでの時間が設定した時間よりも長い時間が経過してから発生する可能性があることをおわかりいただけたかと思います。
では、この時間を制御することはできるのでしょうか。

残念ながら厳密な制御はできませんが、それぞれの機能の面から以下の2つのいずれかの方法でより短い時間でエラーとすることが可能です。

A に対する方法: 接続試行は単一のプロトコルのみで行う
B に対する方法: TCP/IP の再転送回数を減らす

一例ですが、System.Data.SqlClientにおいては以下のいずれかの方法で単一のプロトコルを使用できるようになります。

- Network Library キーワードを使用する。
  例えば接続文字列に Network Library=dbmssocn を指定すると TCP/IP のみを使用することになります。

- Data Source に指定する IP アドレスやインスタンス名にプロトコルを明示する。
  例えば Server01 インスタンスにアクセスする場合には Data Source=Server01と記載しますが、名前付きパイプで接続したい場合には以下のように変更します。

        Data Source=np:Server01

.NET Framework アプリケーションの場合は、どちらも MSDN リファレンスの以下のページにそれぞれの指定方法についての記載がありますのでご覧ください。

SqlConnection.ConnectionString プロパティ
http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

接続時の再転送回数設定を調整するには

・アプリケーション実行環境が Windows Server 2008 / Vista 以降のバージョンの場合

以下から入手できる修正プログラムを導入することで接続時の再転送回数の設定を netsh コマンドによって調整できます。

Hotfix enables the configuration of the TCP maximum SYN retransmission amount in Windows 7 or Windows Server 2008 R2
http://support.microsoft.com/kb/2786464

・アプリケーション実行環境が Windows Server 2008 / VIsta 以前のバージョンの場合

Windows Vista 以前ではレジストリの TcpMaxConnectRetransmissions の値を設定することで接続試行の再転送回数を制御可能ですが Windows Vista 以降ではこのレジストリは存在しません。

TCP/IP Registry Values for Microsoft Windows Vista and Windows Server 2008
http://www.microsoft.com/en-us/download/details.aspx?id=9152

Appendix A: TCP/IP Configuration Parameters
http://technet.microsoft.com/ja-jp/library/cc739819(v=ws.10).aspx

今回の接続タイムアウト時の動作についての情報が何か役立つようであればうれしいです。
さて次回はスキップしたエラーについてまとめられたらと思っています。

過去の Troubleshooting Connectivity シリーズはこちら。clip_image001

 Troubleshooting Connectivity #1 - SQL Server への接続

 Troubleshooting Connectivity #2 - エラー情報からわかる失敗原因

 Troubleshooting Connectivity #3 - 予期しない接続切断

 Troubleshooting Connectivity #4 - 接続エラーの調査方法

 Troubleshooting Connectivity #5 - セッション確立までの動作

 Troubleshooting Connectivity #6 - 接続タイムアウトは悪なのか?

 Troubleshooting Connectivity #7 - 接続タイムアウトエラーまでの時間は?

2014 年 6 月 SQL Server 最新モジュール

$
0
0

2014 年 6 月 13 日時点の SQL Server 最新モジュールです。

SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。
SQL Server 2008 は 2014 年 7 月 8 日にメインストリームサポートが終了します。CU17 が最後の累積的な更新プログラムとなります。

 

サービス
パック

更新プログラム

バージョン

リリース年月

SQL Server 2014

RTM

KB 2931693(CU1)

12.0.2342

2014/4

メインストリームサポート

SQL Server 2012

SP2

RTM

11.0.5058.0

2014/6

メインストリームサポート

SQL Server 2008 R2

SP2

KB 2938478 (CU12)

10.50.4305

2014/4

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2008

SP3

KB 2958696 (CU17)

10.00.5861

2014/5

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2005

SP4

KB 2598903 (OD)

KB 2716427 Reporting Services (MS12-070)

9.00.5295

9.00.5324

2011/8

2012/10

延長サポート
(2016/4/12 終了)

RTM : Release To Manufacturing (製品出荷版)
SP : Service Pack (サービスパック)
CU : Cumulative Update (隔月リリースの累積更新プログラム)
OD : On-Demand (オンデマンドリリースの累積更新プログラム)

SQL Server の更新プログラムの詳細については、SQL Server の更新プログラムを参照して下さい。

メインストリームサポート、延長サポートについては、マイクロソフトサポートライフサイクルを参照して下さい。

インストールされている SQL Server の情報が保持されたレジストリについて [SQL Server 2000 ~ SQL Server 2014]

$
0
0

 

皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチーム の高原です。

今回は、インストールされている SQL Server のインスタンス名、バージョン情報、エディション情報が保持された、レジストリ (SQL Server 2000 から SQL Server 2014) について紹介します。

 

[SQL Server 2000]

  x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]
HKLM\Software\Microsoft\Microsoft SQL Server\MSSQLServer\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]
HKLM\Software\Microsoft\Microsoft SQL Server\<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

 

 WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]
HKLM\Software\Wow6432Node\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

 

[SQL Server 2005]

 x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : MSSQLSERVER の値のデータ (例 MSSQL.1)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : <インスタンス名> の値のデータ (例 MSSQL.3)を取得

2) 1) の結果より、名前付きインスタンスのバージョン情報を、以下のレジストリから取得

HKLM\Software\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : MSSQLSERVER の値のデータ (例 MSSQL.1)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\Setup
文字列値 : Edition

[名前付きインスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : <インスタンス名> の値のデータ (例 MSSQL.3)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\Setup
文字列値 : Edition

 

  WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : MSSQLSERVER の値のデータ (例 MSSQL.1)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : <インスタンス名> の値のデータ (例 MSSQL.1)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : MSSQLSERVER の値のデータ (例 MSSQL.1)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\Setup
文字列値 : Edition

[名前付きインスタンス]

1) 以下のレジストリ値より、既定インスタンス情報が保持されたレジストリキー情報を取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names
文字列値 : <インスタンス名> の値のデータ (例 MSSQL.3)を取得

2) 1) の結果より、既定インスタンスのバージョン情報を、以下のレジストリから取得
HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\<1) で取得した値のデータ>\MSSQLServer\Setup
文字列値 : Edition

 

[SQL Server 2008]

  x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10.<インスタンス名>\Setup
文字列値 : Edition

 

  WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10.<インスタンス名>\Setup
文字列値 : Edition

 

[SQL Server 2008 R2]

  x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.<インスタンス名>\Setup
文字列値 : Edition

 

  WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10_50.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL10_50.<インスタンス名>\Setup
文字列値 : Edition

 

[SQL Server 2012]

  x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL11.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL11.<インスタンス名>\Setup
文字列値 : Edition

 

  WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL11.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL11.<インスタンス名>\Setup
文字列値 : Edition

 

[SQL Server 2014]

  x64/x86
SQL Server インスタンス名

HKLM\Software\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL12.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL12.<インスタンス名>\Setup
文字列値 : Edition

 

  WOW64
SQL Server インスタンス名

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server
文字列値 : InstalledInstances

SQL Server 各インスタンスのバージョン情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL12.<インスタンス名>\MSSQLServer\CurrentVersion
文字列値 : CurrentVersion

SQL Server 各インスタンスのエディション情報

[既定インスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\Setup
文字列値 : Edition

[名前付きインスタンス]

HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL12.<インスタンス名>\Setup
文字列値 : Edition

 

[補足]

SQL Server 2005 以降の場合、WMI を使用することにより、同様に インストールされている SQL Server の情報を取得することが出来ます。

 

[コマンド例] (SQL Server 2012)

set wmi = GetObject("WINMGMTS:\\.\root\Microsoft\SqlServer\ComputerManagement11")
for each prop in wmi.ExecQuery("select * from SqlServiceAdvancedProperty where SQLServiceType = 1")
WScript.Echo prop.ServiceName & " " & prop.PropertyName & ": " & prop.PropertyStrValue
next

 

[結果例]

MSSQLSERVER SQLSTATES:
MSSQLSERVER VERSION: 11.1.3000.0
:
MSSQLSERVER SKU:
MSSQLSERVER SKUNAME: Enterprise Edition (64-bit)
MSSQLSERVER INSTANCEID: MSSQL11.MSSQLSERVER
:

[参考情報]

VBScript を使用して SQL Server サービスの詳細プロパティを変更する方法

 

※ 本Blogの内容は、2014年6月 現在の内容となっております


SQL Server 2012 の SysPrep で Analysis Services と共有機能を準備する方法

$
0
0

 

福原 宗稚

Support Escalation Engineer

 

SQL Server 2012 の SysPrep で Analysis Services と共有機能を含めてイメージの準備をする際に、日本語版のインストーラーに問題があることが分かりました。そこで、正しくイメージの準備をする方法をご紹介します。

 


 

前提

SQL Server 2012 のサービスパック (SP) や更新プログラム(CU)を含めてイメージの準備をするためには、「/UpdateSource」パラメーターを指定してインストーラーをコマンド実行します。

SQL Server 2012 SP1 CU2 から、Analysis Services と共有機能の SysPrep が利用できるようになりました。

 

問題

英語版での SysPrep では問題なく、Analysis Services と共有機能をイメージに含めることができますが、日本語等ローカライズされたバージョンでは正しく動作しません。

インストールウィザードの [機能の選択] 画面で、Analysis Services、共有機能が一覧に表示されないため、これらの機能をイメージに含めることができません。

clip_image001

 

 
対処方法

使用するバージョンによって、対処方法が異なります。


A. SQL Server 2012 SP1 の CU
B. SQL Server 2012 SP2


A. SQL Server 2012 SP1 の CU

SQL Server 2012 SP1 CU10 を例とします。

 

1) SQL Server 2012 のインストーラー、SQL Server 2012 SP1SQL Server 2012 SP1 CU10を用意します。

image

SQL Server 2012 SP1 : SQLServer2012SP1-KB2674319-x64-JPN.exe

SQL Server 2012 SP1 CU10 : SQLServer2012-KB2954099-x64.exe

 

※SP1、SP1 CU10 は同じフォルダに保存します。フォルダは任意の名称で作成します。


2) SQL Server 2012 SP1 CU10 (SQLServer2012-KB2954099-x64.exe) を実行します。


3) SQL Server 2012 SP1 CU10 (SQLServer2012-KB2954099-x64.exe) のダイアログが終了し、C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\SQLServer2012 配下にセットアップサポートファイルがインストールされていることを確認します。

image

 

4) コマンドプロンプトから下記コマンドを実行し、イメージの準備を開始します。

Setup /ACTION=PrepareImage /UpdateSource=C:\SQL2012SP1andSP1CU10

※ /UpdateSource に、SP1 と SP1 CU10 を保存しているフォルダを指定します。


5) インストールウィザードを進め、[機能の選択] で Analysis Services、共有機能が一覧に表示されていることを確認します。

clip_image001[6]

6) 必要な機能にチェックを入れてウィザードを進めます。

 

 

B. SQL Server 2012 SP2

SQL Server 2012 SP2 でこの問題は修正されています。そのため、/UpdateSource  で SP2 を指定したコマンド実行の手順でイメージの準備が可能です。

 

1) SQL Server 2012 のインストーラー、SQL Server 2012 SP2を用意します。

image

SQL Server 2012 SP2 : SQLServer2012SP2-KB2958429-x64-JPN.exe

※フォルダは任意の名称で作成します。


2) コマンドプロンプトから下記コマンドを実行し、イメージの準備を開始します。

Setup /ACTION=PrepareImage /UpdateSource=C:\SQL2012SP2

※ /UpdateSource に、SP2 を保存しているフォルダを指定します。


3) インストールウィザードを進め、[機能の選択] で Analysis Services、共有機能が一覧に表示されていることを確認します。

clip_image001[6]

4) 必要な機能にチェックを入れてウィザードを進めます。

 
備考

SQL Server 2012 SP2 では修正されているため、SQL Server 2012 SP2 の CU を含めてイメージの準備をする際には、通常の /UpdateSource  を使用したコマンド実行の手順でイメージの準備が可能です。

2014 年 7 月 SQL Server 最新モジュール

$
0
0

2014 年 7 月 1 日時点の SQL Server 最新モジュールです。

SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。
SQL Server 2008 は 2014 年 7 月 8 日にメインストリームサポートが終了します。CU17 が最後の累積的な更新プログラムとなります。

 

サービス
パック

更新プログラム

バージョン

リリース年月

SQL Server 2014

RTM

KB 2967546 (CU2)

12.0.2370.0

2014/6

メインストリームサポート

SQL Server 2012

SP2

RTM

11.0.5058.0

2014/6

メインストリームサポート

SQL Server 2008 R2

SP2

KB 2967540 (CU13)

10.50.4319.0

2014/7

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2008

SP3

KB 2958696 (CU17)

10.00.5861

2014/5

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2005

SP4

KB 2598903 (OD)

KB 2716427 Reporting Services (MS12-070)

9.00.5295

9.00.5324

2011/8

2012/10

延長サポート
(2016/4/12 終了)

RTM : Release To Manufacturing (製品出荷版)
SP : Service Pack (サービスパック)
CU : Cumulative Update (隔月リリースの累積更新プログラム)
OD : On-Demand (オンデマンドリリースの累積更新プログラム)

SQL Server の更新プログラムの詳細については、SQL Server の更新プログラムを参照して下さい。

メインストリームサポート、延長サポートについては、マイクロソフトサポートライフサイクルを参照して下さい。

real および float データ型におけるアンダーフロー時の動作

$
0
0

 

 

神谷 雅紀
Escalation Engineer

 

real および float 浮動小数点データ型においてアンダーフローが発生した場合、エラーは発生しません。0 が設定されます。

 

各データ型で格納可能な数値範囲は以下の通りです。

 

データ型格納可能な数値範囲
real- 3.40E+38 ~ -1.18E-38、0、および 1.18E-38 ~ 3.40E+38
float- 1.79E+308 ~ -2.23E-308、0、および 2.23E-308 ~ 1.79E+308

 

 

以下は、その動作を確認することのできる簡単なサンプルです。

 

float 型に格納可能な最小値よりも小さな 2.23E-309 を格納しようとすると、結果は 0 になります。それを示す警告も返されます。

 

declare @r float
set @f = 2.23E-309
select @f as 'float'

警告: 浮動小数点値 '2.23E-309' は小さすぎます。この値は 0 と見なされます。
float
----------------------
0

 

real が格納可能な数値よりも小さな数値 1.18E-39 を格納しようとすると、結果は 0 になります。

 

declare @r real
set @r = 1.18E-39
select @r as 'real'

real
-------------
0


1.18E-39 を格納可能な float に一旦入れた後に、それを real にコピーしても 0 になります。

 

declare @r real, @f float
set @f = 1.18E-39
set @r = @f
select @f as 'float', @r as 'real'

 

float                  real
---------------------- -------------
1.18E-39               0


計算の結果としてアンダーフローが発生した場合も 0 になります。


declare @r real
set @r = 1.18E-38
select @r as '1.18E-38'
set @r = @r * @r
select @r as '1.18E-38 * 1.18E-38'

 

1.18E-38
-------------
1.18E-38

 

1.18E-38 * 1.18E-38
-------------------
0

 

追加情報

SQL Server 2012 では浮動小数点型パラメータを使用した RPC (* 1) において、real 型の範囲を超えた値を渡すと以下のエラーが発生するという問題がありました。


エラーメッセージ

着信の表形式のデータ ストリーム (TDS) リモート プロシージャ コール (RPC) のプロトコル ストリームが正しくありません。パラメーター X ("XXX"): 指定した値はデータ型 real の有効なインスタンスではありません。ソース データに無効な値があるかどうかを確認してください。たとえば、小数点以下桁数が有効桁数より大きい数値型のデータは無効です。


この問題は、以前のバージョンでは許可されていなかった非正規化浮動小数点数 (denormalized float/real) が、現在のバージョンでは許可されているものの、一部不要なチェックが残っていたために発生していました。

この問題は SQL Server 2014 では修正されています。この修正により、浮動小数点型パラメーターの値として real 型の範囲を超えた値を渡していたアプリケーションでは、SQL Server 2012 ではエラーになっていたものが、SQL Server 2014 では値 0 として扱われるようになります。

 

(*1) RPC: Remote Procedure Call の略。クライアントアプリケーションが SQL Server に対して要求を送信する方法のひとつ。バッチ (Batch) もしくは Language と呼ばれる方法が SQL Server に対して T-SQL 文字列を渡すのに対して、RPC は呼び出すストアドプロシージャの名前もしくは番号と各パラメーターのデータ型および値を渡す。SQL トレースや拡張イベントのイベント名 “RPC:Completed” などの “RPC” はこれ。

[Troubleshooting - SSIS] エラー 0xc02020f6: データフロータスク 1:列"xxx" では、Unicode 形式の文字列データ型と Unicode 以外の形式の文字列データ型を変換できません。

$
0
0

 

事象

“データのインポートおよびエクスポートウィザード” を利用し、Oracle 11g から SQL Server 2012 へ、char 型のデータを含むテーブルを移行した際、以下のエラーが出力され、データの移行ができない。

-------------------------
エラー 0xc02020f6: データフロータスク 1:列 "xxxx" では、Unicode 形式の文字列データ型と Unicode 以外の形式の文字列データ型を変換できません。
(SQL Server インポートおよびエクスポートウィザード)

-------------------------

具体的な例

- 環境
・Oracle 11g のキャラクタセットは AL32UTF8 。
・Oracle 11g の char 型の列をもつテーブルのデータを、 SQL Server 2012 の char 型の列をもつテーブルへデータを移行する。
・Oracle Provider for OLE DB を利用し、Oracle へ接続する。
・SQL Server への接続は SQL Server Native Client 11.0
・SQL Server 2012 の ”データのインポートおよびエクスポートウィザード” を利用し、Oracle に格納されたデータを移行する。

対処方法

C:\Program Files\Microsoft SQL Server\110\DTS\MappingFiles\OracleToSSIS10.XML の下記箇所を修正します。


---- 変更前-----
<!—CHAR -->
<dtm:DataTypeMapping >
<dtm:SourceDataType>
<dtm:DataTypeName>char</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:CharacterStringType>
<dtm:DataTypeName>DT_STR</dtm:DataTypeName>
--------------------

----- 変更後-------
<!—CHAR -->
<dtm:DataTypeMapping >
<dtm:SourceDataType>
<dtm:DataTypeName>char</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:CharacterStringType>
<dtm:DataTypeName>DT_WSTR</dtm:DataTypeName>
-----------------------

その他、“データのインポートおよびエクスポートウィザード” を利用せず、SQL Server Data Tools を利用し、SSIS のパッケージを作成後、データの移行の過程に、データ変換タスクを追加し対処することも可能です。

+ 参考情報

データ変換の変換
http://technet.microsoft.com/ja-jp/library/ms141706(v=sql.110).aspx

データ変換の変換を使用してデータを別のデータ型に変換する
http://technet.microsoft.com/ja-jp/library/ms140321(v=sql.110).aspx

以上です。参考になれば幸いです。

2014 年 8 月 SQL Server 最新モジュール

$
0
0

2014 年 8 月 8 日時点の SQL Server 最新モジュールです。

SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。
SQL Server 2008 は 2014 年 7 月 8 日にメインストリームサポートが終了します。CU17 が最後の累積的な更新プログラムとなります。

 

サービス
パック

更新プログラム

バージョン

リリース年月

SQL Server 2014

RTM

KB 2967546 (CU2)

12.0.2370.0

2014/6

メインストリームサポート

SQL Server 2012

SP2

KB 2976982 (CU1)

11.0.5532.0

2014/7

メインストリームサポート

SQL Server 2008 R2

SP2

KB 2967540 (CU13)

10.50.4319.0

2014/7

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2008

SP3

KB 2958696 (CU17)

10.00.5861

2014/5

メインストリームサポート

※2014年7月8日にメインストリームサポートが終了します。

SQL Server 2005

SP4

KB 2598903 (OD)

KB 2716427 Reporting Services (MS12-070)

9.00.5295

9.00.5324

2011/8

2012/10

延長サポート
(2016/4/12 終了)

RTM : Release To Manufacturing (製品出荷版)
SP : Service Pack (サービスパック)
CU : Cumulative Update (隔月リリースの累積更新プログラム)
OD : On-Demand (オンデマンドリリースの累積更新プログラム)

SQL Server の更新プログラムの詳細については、SQL Server の更新プログラムを参照して下さい。

メインストリームサポート、延長サポートについては、マイクロソフトサポートライフサイクルを参照して下さい。

MDX 関数 BOTTOMCOUNT 使用の際の注意事項

$
0
0

 

 

SQL Server Developer Support チーム

 

 

 

概要

MDX 関数の BOTTOMCOUNT を利用し、セットを指定した値で昇順に並び替える際、NULL となる値を FILTER する必要があります。

 

 

 

対処方法

 

前提

弊社 Adventure Works DW サンプルデータベースを基に、BOTTOMCOUNT を利用し、メジャーの Internet Sales Amount が最下位 3 つの [Product].[SubCategory] を返却する方法を案内します。

 

 

対象データ

 

[Product].[SubCategory] 別の Internet Sales Amount は以下の通り、NULL を含むレコードが含まれています。

 

clip_image001

 

上記から、NULL でない値を保持する最下位 3 位の [Product].[SubCategory] は次の通り、 Socks, Cleaners, Caps の 3 つです。

 

clip_image002

 

 

実装例

 

-- NULL を排除しない場合

次の結果の通り、NULL が最下位 3 つのレコードと認識されるため、NULL のレコードを保持する [Product].[SubCategory] が返されます。

 

SELECT

{[Measures].[Internet Sales Amount]} ON COLUMNS,

BOTTOMCOUNT(

[Product].[Subcategory].Members

,3

, [Measures].[Internet Sales Amount]

) ON ROWS

FROM

[Adventure Works]

 

 

clip_image003

 

 

-- NULL を排除する場合

 

NULL を排除するように、FILTER した場合、NULL のレコードを保持する [Product].[SubCategory] は排除されるため、NULL でない値を保持する最下位 3 位の [Product].[SubCategory] である、 Socks, Cleaners, Caps の 3 つが返されます。

 

SELECT

{[Measures].[Internet Sales Amount]} ON COLUMNS,

BOTTOMCOUNT(

FILTER([Product].[Subcategory].Members,

NOT ISEMPTY([Measures].[Internet Sales Amount]))

                ,3

                , [Measures].[Internet Sales Amount]

) ON ROWS

FROM       

[Adventure Works]

 

clip_image004

 

 

 

以上の通りです。

照合順序 - 文字の比較と並び順 (その 2)

$
0
0

神谷 雅紀
Escalation Engineer

    
照合順序 - 文字の比較と並び順 (その 1)では照合順序とは何かを書きました。今回は、照合順序に関わるいくつかの注意点について書きます。


照合順序の衝突


異なる照合順序が指定されている列同士は、比較することができません。

以下は、その簡単なサンプルです。


use master
go
drop database ja_90_bin2
go
-- 照合順序 japanese_90_bin2 のデータベースを作成
create database ja_90_bin2 collate japanese_90_bin2
go
use ja_90_bin2
go
-- 照合順序 japanese_90_bin2 のデータベースに japanese_90_ci_as と japanese_90_cs_as の列を持つテーブルを作成
create table dbo.ja_90_cias (c1 int, c2 nvarchar(10) collate japanese_90_ci_as)
create table dbo.ja_90_csas (c1 int, c2 nvarchar(10) collate japanese_90_cs_as)
go

-- japanese_90_ci_as と japanese_90_cs_as の列でテーブルを結合
select * from dbo.ja_90_cias i inner join dbo.ja_90_csas s on i.c2=s.c2
go

-- 実行結果
メッセージ 468、レベル 16、状態 9、行 1
equal to 操作の "Japanese_90_CS_AS" と "Japanese_90_CI_AS" 間での照合順序の競合を解決できません。


これが問題になる最も一般的な例が、tempdb 上に作成される一時テーブルです。


use ja_90_bin2
go
-- ユーザーデータベースにテーブルを作成
create table dbo.parmanent_tab (c1 int, c2 nvarchar(10))
-- 一時テーブルを作成
create table #temporary_tab (c1 int, c2 nvarchar(10))
go
-- これらのテーブルを結合
select * from dbo.parmanent_tab p inner join #temporary_tab t on p.c2=t.c2
go

-- 実行結果
メッセージ 468、レベル 16、状態 9、行 1
equal to 操作の "Japanese_CI_AS" と "Japanese_90_BIN2" 間での照合順序の競合を解決できません。


一時テーブルは tempdb に作成されますので、一時テーブルの列は明示的に指定しない限り、tempdb の照合順序を継承します。tempdb は、SQL Server インストール後に明示的に変更していない限り、SQL Server インストール時に指定したインスタンスの照合順序に設定されています。そのため、ユーザーデータベースやテーブルの作成時に tempdb とは異なる照合順序を指定した場合には、注意が必要です。

照合順序が同一ではない列の比較を行う場合は、以下のように、比較に使用する照合順序を明示的に指定する必要があります。



select * from dbo.parmanent_tab p inner join #temporary_tab t on p.c2=t.c2 collate japanese_90_cs_as


データベース照合順序とメタデータ参照


データベースの照合順序は、メタデータにも適用されます。

例えば、BIN2 照合順序のデータベースにあるテーブルを参照す���場合は、テーブル名や列名の大文字小文字が区別されます。

以下は、その例です。テーブル名の最初の文字 j は小文字ですが、クエリでの参照では J と大文字になっているため、エラーとなります。


select * from dbo.Ja_90_cias i inner join dbo.ja_90_csas s on i.c2=s.c2
go

-- 実行結果
メッセージ 208、レベル 16、状態 1、行 1
オブジェクト名 'dbo.Ja_90_cias' が無効です。


日本語におけるアクセント


「ぁ」などは、Japanese および Japanese_90 照合順序では、大文字小文字 (Case) ではなくアクセント (Accent) として扱われます。

「々」「ー」(長音) などは、直前の文字の繰り返しであり、それ自体は意味を持たないものとして解釈されます。


if N'あ' = N'ぁ' collate japanese_90_ci_ai
print N'equal'
else
print N'not equal'
go
if N'あ' = N'ぁ' collate japanese_90_ci_as
print N'equal'
else
print N'not equal'

-- 実行結果
equal
not equal
   
   

「重み (weight)」がない文字を用いた比較


BIN もしくは BIN2 照合順序として比較することで、重みが定義されていない文字の比較が可能になります。



付録 : 文字一覧の作成スクリプトサンプル (SC 照合順序サポートバージョン (SQL Server 2012 以降) 用)


マイクロソフトでは、個々の照合順序ごとの文字の並び順の一覧や並び順の規則などは公開していません。並び順を確認する必要がある場合は、確認の必要な照合順序ごとに、以下のようなスクリプトにより確認して下さい。


 

-- 準備
if db_id(N'collation') is not null
drop database collation
go
create database collation collate Japanese_XJIS_100_CI_AS_SC
go
use collation
go
drop table dbo.t1
go
create table dbo.t1
(k int,             
c nvarchar(2) collate Japanese_XJIS_100_CI_AS_SC)
go
declare @c int
set @c=0
while (@c <= 0x10FFFF)
begin
  insert into dbo.t1 values (@c, NCHAR(@c))   
  set @c+=1
end
go

-- Japanese_XJIS_100_CI_AS_SC 順
select * from dbo.t1 order by c collate Japanese_XJIS_100_CI_AS_SC,k
go

-- Japanese_90_CI_AS 順
select * from dbo.t1 order by c collate Japanese_90_CI_AS,k
go

-- Japanese_CI_AS 順
select * from dbo.t1 order by c collate Japanese_CI_AS,k
go

-- Japanese_CI_AS 順
select k as 'code', c 'char',
  case
  when NextChar = c collate Japanese_CI_AS then '='
  else '!=' end as 'EQ/NEQ',
  NextChar as 'next char',
  unicode(NextChar) as 'next char code'
from
(select k, c, lead(c,1,0) over (order by c collate Japanese_CI_AS, k) as 'NextChar' from dbo.t1) X
order by c collate Japanese_CI_AS, k
go


   


 


NULL データが含まれる場合の MDX 関数 BOTTOMCOUNT 使用の注意事項

$
0
0

  

SQL Server Developer Support チーム

  

概要

 

 

SQL Server Analysis Services のキューブデータには、データソースとなるデータに依存し、メジャーに NULL データを含む場合があります。
MDX 関数に BOTTOMCOUNT という関数があり、これは、指定した項目を並べ替え、下位から指定した件数分のデータを取得するという関数です。

 

この関数を利用した場合に NULL データが含まれていると、並べ替えの結果、NULL が下位となり NULL のデータを優先して返すこととなり、想定しない結果が返ったと感じる場合があります。

 

データ例
弊社 Adventure Works DW サンプルデータベースを基に、BOTTOMCOUNT を利用し、メジャーの Internet Sales Amount が最下位 3 つの [Product].[SubCategory] を返却する方法を案内します。


[Product].[SubCategory] 別の Internet Sales Amount は以下の通り、NULL を含むレコードが含まれています。 
 

 

clip_image001

上記から、NULL でない値を保持する最下位 3 位の [Product].[SubCategory] は次の通り、 Socks, Cleaners, Caps の 3 つです。 

clip_image002

次の結果の通り、NULL が最下位 3 つのレコードと認識されるため、NULL のレコードを保持する [Product].[SubCategory] が返されます。

-- 式

SELECT

{[Measures].[Internet Sales Amount]} ON COLUMNS,

BOTTOMCOUNT(

[Product].[Subcategory].Members

,3

, [Measures].[Internet Sales Amount]

) ON ROWS

FROM

[Adventure Works]

 

-- 結果

clip_image003 



対処方法

MDX 関数の BOTTOMCOUNT を利用し、セットを指定した値で昇順に並び替える際、NULL となる値を FILTER する必要があります。


実装例 

NULL を排除するように、FILTER した場合、NULL のレコードを保持する [Product].[SubCategory] は排除されるため、NULL でない値を保持する最下位 3 位の [Product].[SubCategory] である、 Socks, Cleaners, Caps の 3 つが返されます。 


-- 式
 

SELECT

{[Measures].[Internet Sales Amount]} ON COLUMNS,

BOTTOMCOUNT(

FILTER([Product].[Subcategory].Members,

NOT ISEMPTY([Measures].[Internet Sales Amount]))

                ,3

                , [Measures].[Internet Sales Amount]

) ON ROWS

FROM       

[Adventure Works]


 -- 結果

clip_image004

 

 NULL を Filter した結果、NULL を除いた下位データを得ることができます。

【レプリケーション】サブスクリプション数が多いとディストリビューションエージェント(distrib.exe)が失敗することがある

$
0
0

 

福原 宗稚
Support Escalation Engineer

 

最近複数のお客様から、レプリケーションについて同様の事象を報告いただくことがありました。レプリケーションモニターやエージェントのヒストリーを見ても、エージェントの起動に失敗したという記録くらいしか確認できずなかなか分かりにくい事象のため、ここでご紹介します。

 

問題

サブスクリプションのスナップショット適用時、もしくはその後の同期において、ディストリビューション エージェントでエラーが発生します。
SQL Server エラーログや、アプリケーションイベントログには、エラー 14151が記録されます。

エラー: 14151、重大度: 18、状態: 1。
Replication-レプリケーション ディストリビューション サブシステム: agent <job name> failed. プロセスで、テーブル '"dbo"."<tablename>"' に一括コピーできませんでした。

 

特徴

下記の特徴があります。これらに合致する場合には、この問題に合致していると判断できます。


1) システム イベントログに、ディストリビューションエージェントの起動後にエラー 243が 1 回記録されます。

ログの名前:         System
ソース:           Win32k
イベント ID:       243
レベル:           警告
説明:
デスクトップ ヒープの割り当てに失敗しました。

2) 多くのサブスクリプションを設定しています。これまでの実績としては、約300個のサブスクリプションを設定している環境で発生しています。

 

原因

多くのディスクトリビューションエージェントが起動することによって、デスクトップヒープが枯渇することが原因です。

デスクトップヒープはアプリケーションが通常動作する際に内部的に使用されるメモリ領域です。このデスクトップヒープはサーバーの物理メモリに関係なく、OSによって固定サイズが割り当てられています。 この領域が不足すると、物理メモリ領域に空きがあっても、アプリケーションが起動しない現象が発生することがあります。
 

対処

以下のいずれかの方法により対応可能です。

 

1.デスクトップヒープのサイズを拡張する

2.サブスクリプションの定義を PUSH 型と PULL 型の2種類に分割する

3.ディストリビューションエージェントの設定を変更する

 

1.デスクトップヒープのサイズを拡張する

ヒープサイズを拡張する方法となります。

 

メリットおよびデメリット

メリットSQL Server 側の設定を変える必要がなく、現在のシステム構成の状態で回避できることが期待できます。
デメリット

デスクトップヒープを極端に大きくする事はシステムのパフォーマンスに影響を与える可能性があります。
また、今後、更にサブスクリプションが増えるような場合には同じような状況に至る可能性があります。
※性能への影響はサイズ変更より机上で計算できない為、実際の環境でアプリケーションのテストを踏まえて判断する必要があります。


 変更方法

1) レジストリエディタを起動し、次のレジストリに移動します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows

2) SharedSection の値を変更します。

3) OSを再起動して、変更を有効にします。

例)


設定前

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

  デスクトップヒープの割り当て方法は、"SharedSection=" の後に続く 3 つの数値によって制御されます。
  これらの SharedSection の値は、KB 単位で指定されます。今回の事象では、以下のように、第 3 パラメーターの値を変更します。

  SharedSection=1024,20480,768  -------> 変更前
  ↓ ↓ ↓
  SharedSection=1024,20480,1024 -------> 変更後

設定後

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,1024 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16


(*)注: 上記設定によって、回避ができない場合、徐々に(512KBを基準に)増加させて、回避できるかどうか確認します。

2.サブスクリプションの定義を PUSH 型と PULL 型の2種類に分割する

PUSH 型では distrib.exe がディストリビューターで起動します。一方、PULL 型では distrib.exe がサブスクライバーで起動します。
起動するプロセスをディストリビューターとサブスクライバーで分散させることによって、それぞれのサーバーで実行されるプロセスを減らす方法となります。

 

メリットおよびデメリット

メリット本事象を回避し、ディストリビューターもしくはサブスクライバーで実行されるディストリビューション関連の処理を負荷分散させることが期待できます。
デメリット

レプリケーションの構成変更が必要になります。

 

変更方法

PUSH サブスクリプションが多い場合には、既存の PUSH サブスクリプションを削除し、PULL サブスクリプションで再作成します。
PULL サブスクリプションが多い場合には、既存の PULL サブスクリプションを削除し、PUSH サブスクリプションで再作成します。

 

3.ディストリビューションエージェントの設定を変更する

共有エージェントを使用することにより、ディストリビューション エージェント (distrib.exe) の数を削減する方法となります。
SQL Server は既定で独立エージェントを使用するようになっており、パブリケーション単位、サブスクリプション単位でディストリビューション エージェントが起動されます。 一方で、共有エージェントの場合には、パブリケーション データベースとサブスクリプション データベースが同一である場合にはディストリビューション エージェントを共有して利用できます。

例) パブリケーション データベースに対して 2 つのパブリケーションを作成し、それぞれが 2 つのサブスクリプション データベースへ同期を行う場合

独立エージェント : 4つのディストリビューション エージェントが起動する
共有エージェント : 2つのディストリビューション エージェントが起動する

 

メリットおよびデメリット

メリットパブリケーション データベースとサブスクリプション データベースが同一の組み合わせとなるパブリケーション/サブスクリプションが存在する場合には、共有エージェントを使用できます。共有エージェントを使用するとパブリッシャー兼ディストリビューター側で実行されているディストリビューション エージェント起動プロセス数が削減でき、結果的にデスクトップ ヒープの消費を削減し、本事象を回避することが期待できます。
デメリットサブスクリプションの削除、パブリケーションのプロパティ変更などの構成変更が必要になります。また、共有エージェントではキューを利用した同期処理を行うため、並列で処理が行われる独立エージェントよりも同期パフォーマンスが低下する可能性があります。

 

変更方法

共有エージェントを使用するためには、以下の手順で変更します。
1) Management Studio でパブリッシャ兼ディストリビュータの SQL Server に接続します。
2) オブジェクト エクスプローラーで [レプリケーション] フォルダを展開し、設定変更を行うパブリケーションに対するすべてのサブスクリプションをすべて削除します。サブスクリプションの削除は右クリックして [削除] を選択します。
3) パブリケーションのプロパティを開き、[サブスクリプション オプション] のページを開きます。
4) "独立したディストリビューション エージェント" を False に設定します。(*)
5) 設定変更後、あらためてサブスクリプションを作成します。

 (*)注: "匿名サブスクリプションを許可" と "スナップショットが常に利用可能" のオプションが True の場合には "独立したディストリビューション エージェント" の設定を Management Studio で変更できません。その場合には、システム ストアドプロシージャ sp_changepublication により以下の順で設定を変更します。
 
sp_changepublication @publication = 'パブリケーション名',
@property = 'allow_anonymous',
@value = false

sp_changepublication @publication = 'パブリケーション名',
@property = 'immediate_sync',
@value = false

sp_changepublication @publication = 'パブリケーション名',
@property = 'independent_agent',
@value = false

 

補足

レジストリ エディタの誤った使用は、システム全般に渡る重大な問題を引き起こす可能性があります。 こうした問題を解決するためには、Windows をインストールしなおさなければいけません。 Microsoft では、レジストリ エディタを使用することによって引き起こされた障害の解決については、一切保証しておりません。 レジストリ エディタを使用する場合には、お客様の責任において使用してください。

[TroubleShooting] PowerPivot ギャラリーで PowerPivot ファイルを開くとエラーが発生する

$
0
0

SQL Developer Support Engineer 山崎実久

SQL Server 2012 Reporting Services と SharePoint 2010 で統合モードを構成し、PowerPivot ギャラリー上で PowerPivot のブックを利用した際、SQL Server 2012 のサービスパックや修正プログラムを適用後、PowerPivot ファイルを開くと、以下の予期しないエラーが発生する場合があります。

  

image

 

原因

SharePoint の サーバーの全体管理の監視の項目で設定可能な診断ログを採取し、ログを確認するとエラー再現時以下のメッセージが記録されています。本事象はエラーメッセージの通り、サービスパックや修正プログラムを Analysis Services を含めた SQL Server に適用したことで、ローカルの SQL Server Analysis Services (PowerPivot) インスタンスのバージョン番号が、コンピューター上のプログラム ファイルに関連付けられているバージョンと一致しないために発生しています。

--------------------
08/13/2014 15:10:23.29         w3wp.exe (0x0130)         0x1E34        PowerPivot Service         Request Processing         45        High         Local Analysis Services in VertipaqMode instance version, '11.0.2100.60', does not match bits on machine, '11.0.5058.0'. PowerPivot Setup Extension timer job will be started to correct the problem        f1ce88af-cb8e-403f-8d0a-77ea644cb5fe

・・・

08/13/2014 15:10:23.38         w3wp.exe (0x0304)         0x1868        PowerPivot Service         Unknown         99        High         EXCEPTION: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: ローカルの SQL Server Analysis Services (PowerPivot) インスタンスのバージョン番号が、コンピューター上のプログラム ファイルに関連付けられているバージョンと一致しません。この現象は、セットアップ中にエラーが発生した場合に起こることがあります。この問題を修正するセットアップ拡張機能のタイマー ジョブが起動されています。 (フォルトの詳細は IncludeExceptionDetailInFaults=true により作成された可能性のある ExceptionDetail の値: Microsoft.AnalysisServices.SharePoint.Integration.GeminiException: ローカルの SQL Server Analysis Services (PowerPivot) インスタンスのバージョン番号が、コンピューター上のプログラム ファイルに関連付けられているバージョンと一致しません。この現象は、セットアップ中にエラーが発生した場合に起こることがあります。この問題を修正するセットアップ拡張機能のタイマー ジョブが起動されています。 場所 Microsoft.AnalysisServices.SharePoint.Integration.GeminiServiceApplication.CheckForIMBIVersionMismatch() 場所 Microsoft.AnalysisServices.SharePoint.Integration.GeminiServiceApplication.DiscoverDat...        b2363fac-2419-4af3-b216-5db1300cf362

08/13/2014 15:10:23.38*        w3wp.exe (0x0304)         0x1868        PowerPivot Service         Unknown         99        High         ...abase(String loginName, String dataSource, String dataSourceVersion, DateTime fileLastModifiedTimestamp, Int32 localeId, Boolean addAllocatingAssignmentIfDbNotExist) 場所 SyncInvokeDiscoverDatabase(Object , Object[] , Object[] ) 場所 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) 場所 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 場所 System.ServiceModel.Dispatcher.ImmutableDispatchRunt... と同等です)。        b2363fac-2419-4af3-b216-5db1300cf362

08/13/2014 15:10:23.38         w3wp.exe (0x0304)         0x1868        PowerPivot Service         Unknown         13        Medium         Won't retry because FaultException is hit when running DiscoverDatabase: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: ローカルの SQL Server Analysis Services (PowerPivot) インスタンスのバージョン番号が、コンピューター上のプログラム ファイルに関連付けられているバージョンと一致しません。この現象は、セットアップ中にエラーが発生した場合に起こることがあります。この問題を修正するセットアップ拡張機能のタイマー ジョブが起動されています。 (フォルトの詳細は IncludeExceptionDetailInFaults=true により作成された可能性のある ExceptionDetail の値: Microsoft.AnalysisServices.SharePoint.Integration.GeminiException: ローカルの SQL Server Analysis Services (PowerPivot) インスタンスのバージョン番号が、コンピューター上のプログラム ファイルに関連付けられているバージョンと一致しません。この現象は、セットアップ中にエラーが発生した場合に起こることがあります。この問題を修正するセットアップ拡張機能のタイマー ジョブが起動されています。 場所 Microsoft.AnalysisServices.SharePoint.Integration.GeminiServiceApplication.CheckForIMBIVersionMismatch() 場所 Microsoft.AnalysisServic...        b2363fac-2419-4af3-b216-5db1300cf362

08/13/2014 15:10:23.38*        w3wp.exe (0x0304)         0x1868        PowerPivot Service         Unknown         13        Medium         ...es.SharePoint.Integration.GeminiServiceApplication.DiscoverDatabase(String loginName, String dataSource, String dataSourceVersion, DateTime fileLastModifiedTimestamp, Int32 localeId, Boolean addAllocatingAssignmentIfDbNotExist) 場所 SyncInvokeDiscoverDatabase(Object , Object[] , Object[] ) 場所 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) 場所 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 場所 System.ServiceModel.Dispatcher.ImmutableDispatchRunt... と同等です)。        b2363fac-2419-4af3-b216-5db1300cf362
--------------------

 

 

対処方法

PowerPivot 構成ツールを利用し、アップグレードを行うことで、対処することが可能です。

 
詳細手順
----------
1. [スタート]-[すべてのプログラム]-[Microsoft SQL Server 2012]-[構成ツール]-[PowerPivot 構成ツール] を起動します。
2. [機能、サービス、アプリケーション、およびソリューションのアップグレード] をクリックし、[OK] をクリックします。


clip_image001

以下のポップアップが表示された場合は OK をクリックし次に進みます。


clip_image002

3. アップグレード タスクに含まれているアクションを確認し、[検証] をクリックします。
4. 検証完了実行後、[実行] をクリックしてアクションを適用します。警告のポップアップが表示され、[はい]を選択します。


clip_image003

 

以上です。参考になれば幸いです。

レジストリ ハイブの肥大化について(KB 2793634)

$
0
0

清水 磨

SQL Server Support Engineer

 

SQL Server 2012 SP1の製品不具合(KB 2793634)に起因し、一部のレジストリ ハイブのサイズが拡張される可能性がある事象について説明します。
本不具合はすでに修正されておりますが、この不具合に起因し、一部のレジストリハイブの拡張が進行した場合、OSの再インストールが必要になる場合があります。
そのため、SQL Server 2012 SP1 を使用されている場合には、SQL Server 2012 の最新のサービスパックを適用ください。

以下に詳細を記載します。

[影響を受けるSQL Serverのバージョン]
SQL Server 2012 SP1(11.0.3000.0)
SQL Server 2012 SP1 CU1 (11.00.3321)

[事象]
SQL Server 2012 SP1 のインストール後、一部のレジストリハイブのサイズが徐々に拡張されていく可能性があります。
その結果として、レジストリ全体のサイズが拡張されることになり、自分のプロファイルを用いてWindows にログオンできなくなったり、リソース不足に関連したエラーが発生する可能性があります。

また、レジストリ全体のサイズが拡張されることにより、レジストリに関する操作ができなくなる可能性があります。
あわせてSQL Server の修正プログラムも適用できなくなる可能性があるため、結果としてOSの再インストールが必要となる場合があります。
根本的にレジストリの拡張を防ぐには、修正プログラムの適用が必要となります。(下記 “対処方法” をご確認下さい)

本不具合については、以下の公開情報に記載がございます。

Windows Installer starts repeatedly after you install SQL Server 2012 SP1
http://support.microsoft.com/kb/2793634/en-us

SQL Server 2012 SP1 のインストール後に Windows インストーラーを繰り返し開始します。 (機械翻訳)
http://support.microsoft.com/kb/2793634/ja

[対処方法]
SQL Server 2012 の最新のサービスパックを適用します。

Microsoft® SQL Server® 2012 Service Pack 2 (SP2)
http://www.microsoft.com/en-us/download/details.aspx?id=43340

[原因]
SQL Server 2012 関連コンポーネントが不適切なアセンブリを参照し、ネイティブ イメージの生成に繰り返し失敗します。
この結果、.NET Framework の NGEN サービス(.NET アプリケーションのパフォーマンス向上のため、ネイティブイメージを作成し、キャッシュしておくサービス) の SQL Serverに関連するレジストリ ハイブが拡張されます。

[確認方法]
弊社技術情報 2793634 の事象は、以下の条件すべてに合致している場合、影響を受けていると判断できます。

1) SQL Server 2012 SP1 を使用(11.0.3000.0)、もしくはSQL Server 2012 SP1 CU1 (11.00.3321)を使用している

2) イベントログ (アプリケーション) に以下のようなメッセージが記録されている
--------------------------
イベント Id: 1004
ソース: MsiInstaller
説明: 製品 '{A7037EB2-F953-4B12-B843-195F4D988DA1}' 機能 'SQL_Tools_Ans'、'{0CECE655-2A0F-4593-AF4B-EFC31D622982}' のコンポーネントの検出に失敗しました。リソース ' が存在しません。

イベント Id: 1001
ソース: MsiInstaller
説明: コンポーネント '{6E985C15-8B6D-413D-B456-4F624D9C11C2}' の要求時に製品 '{A7037EB2-F953-4B12-B843-195F4D988DA1}'、'SQL_Tools_Ans' の機能の検出に失敗しました。
--------------------------

また、”ru.exe” ツールにより、現在のレジストリ サイズを確認できます。

レジストリ サイズが大きく拡張されていることが確認できた際は、早急に SQL Server 2012 の最新のサービスパックを適用することを検討下さい。

実行例)
--------------------------
c:\tools\RU>ru.exe HKLM\SOFTWARE
Ru v1.0 - report registry key usage
Copyright (C) 2013 Mark Russinovich
Sysinternals - www.sysinternals.com

Values:       775666
Keys:         459811
Size:         118,216,154 bytes
--------------------------

Registry Usage (RU) v1.0
http://technet.microsoft.com/ja-jp/sysinternals/dn194428

SQL Server Data Tools の入手

$
0
0

SQL Server Developer Support チーム

 

概要

SQL Server Reporting Services のレポートや、Integration Services パッケージ、Analysis Services のデータベース等を作成するにあたって、Business Intelligence Development Studio(SQL Server 2008 R2 までのツール) や SQL Server Data Tools(SQL Server 2012 以降のツール)を使用します。

SQL Server 2012 までは、SQL Server のインストーラーから、Business Intelligence Development Studio や SQL Server Data Tools をインストールすることができました。

SQL Server 2014 より、SQL Server Data Tools は SQL Server のインストーラーに含まれず、個別にダウンロードする必要があります。

ここでは、SQL Server Data Tools の入手先や注意点についてご案内します。

ダウンロード

 Visual Studio 2010Visual Studio 2012Visual Studio 2013
インストール済み未インストール
SQL Server 2012Visual Studio 2010 SP1 適用してから SQL Server 2012 メディアからインストール(*1)SQL  Server 2012 メディアからインストールこちら    (*2)なし
SQL Server  2014 なしなしこちら    (*3)

※予め Visual Studio をインストールしていなくとも、上記ダウンロードのインストーラーで SQL Server Data Tools をインストールすることができます。

(*1)

Visual Studio 2010 が予めインストールされている環境に、SQL Server 2012 のインストールメディアから、SQL Server Data Tools をインストールする場合、Visual Studio 2010 に Service Pack 1 が適用されている必要があります。
もし、Service Pack が適用されていない場合、SQL Server Data Tools をインストールしようとしたインストーラー上で以下のエラーが発生します。

--------
ルール "以前の Visual Studio 2010 のインスタンスは、更新する必要があります。" は失敗しました。
このコンピューターには、機能の選択に基づいて SQL Server を正常にインストールするための Service Pack 1 更新プログラムを必要とする、 Visual Studio 2010 のインストールがあります。続行するには、必要な Visual Studio 2010 Service Pack 1 を SQL Server メディアから、または http://go.microsoft.com/fwlink/?LinkId=220649からインストールしてください。
--------


(*2)

Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012 のインストールには、事前に.NET Framework 4.5 が必要となります。
.NET Framework 4.5 は下記サイトからダウンロード可能です。
http://www.microsoft.com/ja-jp/download/details.aspx?id=30653

表中のダウンロード先のリンクの「システム要件」にこのほかのシステム要件も記載があります。詳細を確認してください。


(*3)

Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2013 のインストールには、事前に.NET Framework 4.5.1 が必要となります。
.NET Framework 4.5.1 は下記サイトからダウンロード可能です。
http://www.microsoft.com/ja-JP/download/details.aspx?id=40779

表中のダウンロード先のリンクの「システム要件」にこのほかのシステム要件も記載があります。詳細を確認してください。



米国の MSDN Blog となりますが、以下の Blog にいち早く情報が記載されることがあります

Microsoft SQL Server Data Tools
http://msdn.microsoft.com/en-us/data/hh297027

SQL Server Data Tools Team Blog
http://blogs.msdn.com/b/ssdt/


※本記事は 2014 年 9 月時点の情報です。

Viewing all 293 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>