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

2013 年 10 月 SQL Server 最新モジュール

$
0
0

2013 年 10 月 29 日時点の SQL Server 最新モジュールです。

SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

 

サービス
パック

更新プログラム

バージョン

リリース年月

SQL Server 2012

SP1

KB 2874879(CU6)

11.00.3381

2013/9

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

SQL Server 2008 R2

SP2

KB 2887606 (CU9)

10.50.4295

2013/10

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

SQL Server 2008

SP3

KB 2880350 (CU13)

10.00.5846

2013/9

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

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 Japan Support Team Blog インデックス

$
0
0

 


★Welcome to Microsoft SQL Server Japan Support Team Blog

====================================

■1. 一般情報

◆a. SQL Server Update 情報

◆b. DO’s&DONT’s やった方がいいこと やらない方がいいこと

◆c. How to系

◆d. 若葉マークブログ

◆e. Known issue

◆f. SQL Connectivity

■2. SQL Serverエンジン

◆a. ツール

◆b 機能

◆c. SQL トラブルシューティング

◆d. インストール/アップグレード/アンインストール

■3. SQL Database (Azure)

■4. Analysis Services

■5. Reporting Service

■6. データアクセス

◆a. ADO.NET

◆b. ADO

◆c. JDBC

■7. Integration Services

■8. イベント・お知らせ

====================================

 

 

 

 


■1. 一般情報 – a. SQL Server Update 情報

1. SQL Server の最新モジュール情報 (まとめページ)
2. SQL Server の更新プログラム

Topへ

========================

■1. 一般情報 – b. DO’s&DONT’s やった方がいいこと やらない方がいいこと

1. DO's&DONT's #1: やらない方がいいこと – 運用環境で、Profiler GUI を使用してトレースする
2. DO's&DONT's #2: 絶対にやらなければいけないこと - データ型を一致させる
3. DO's&DONT's #3: やらなければいけないこと - 非典型的パラメータ値が存在する場合の再コンパイル (Atypical Parameter Problem ...
4. DO's&DONT's #4: やらない方がいいこと - クエリの 条件句 (WHERE や JOIN ON 等) で参照されている列の加工
5. DO's&DONT's #5: やっておいた方がいいこと - SQL Azure アプリケーションでは Activity ID を記録しておく
6. DO's&DONT's #6: 絶対にやってはいけないこと – ストアドプロシージャ内でのパラメータ値の変更
7. DO's&DONT's #7: やらない方がいいこと - インデックス再構築 (REBUILD) 後のデータファイル圧縮 (SHRINK)
8. DO's&DONT's #8: やってはいけないこと - インデックス再構築 (REBUILD) 後のインデックス統計情報更新 (UPDATE STATISTICS)
9. DO's&DONT's #9: やらない方がいいこと - ディメンションのキー属性として末尾に全角スペースが格納される恐れがあるカラムを利用する。
10. DO’s&DONT’s #10: やらない方がいいこと - クエリの条件句で変数を参照する
11. DO’s&DONT’s #11: やってはいけないこと - トランザクションログファイルの拡張サイズを極端に小さくする
12. DO’s&DONT’s #12: やった方がいいこと - max server memory を設定する
13. DO’s&DONT’s #13: 絶対にやってはいけないこと - ORDER BY が指定されていないクエリの結果が一定の順番に並んでいると仮定すること
14. DO’s&DONT’s #14: 絶対にやってはいけないこと - ひとつの CPU に対して affinity mask と affinity I/O mask の両方 ...
15. DO’s&DONT’s #15: やってはいけないこと - クラスタ SQL Server をサービスとして操作すること
16. DO’s&DONT’s #16: やってはいけないこと - ログ配布プライマリデータベースのログバックアップ
17. DO’s&DONT’s #17: やっておいた方がいいこと - tempdb データファイル数を CPU 数に一致させる
18. DO’s&DONT’s #18: やった方がいいこと - .NET Framework アプリケーションでパラメータクエリを実行する場合にはパラメータのデータ型やサイズ ...

Topへ

========================

■1. 一般情報 – c. How to系

1. システム データベースのリストア手順
2. [PowerPivot][HowTo] SharePoint 2013 で PowerPivot for SharePoint を使用する方法
3. 非ドメイン環境上のサーバー間でミラーリングを構築する方法について
4. SQL Server の手動アンインストール手順
5. SQL Server 2008 R2 Service Pack のクラスター環境への適用手順
6. Tips:SQL Server の Log フォルダの位置の確認方法
7. HowTo: BID トレース - データアクセス アプリケーションのトレースを採取する
8. ODBC API を使用して mdb ファイルからメモ型データを取得する方法
9. バックアップからのリストアによるリカバリ手順
10. Windows Vista 以降の OS 上で SQL Server 2008 SQL Server 2008 R2 から DTS パッケージ デザイナ を使うには
11. How To:Ghost Record を確認する方法
12. SQL Server SysPrep の注意事項と実行手順
13. 64 ビットSQL Server から SQL Server 2000 へのリンクサーバー設定について
14. [Linux] BCP で 2GB 以上のサイズのファイルをインポートするには
15. SQL Server Profilerを使用して、取得したPowerPivot 実行時のトレースを確認する方法
16. 実行プランを読む - 基本編 (その 1)
17. 実行プランを読む - 基本編 (その 2)
18. 実行プランを読む - 基本編 (その 3)
19. 実行プランを読む - 基本編 (その 4)
20. 実行プランを読む - 活用編 (その 1) – クエリチューニング
21. 実行プランを読む - 活用編 (その 2) - クエリパフォーマンス悪化の原因
22. SQL トレーススクリプトの作成、実行 (SQL Server 2000)
23. SQL トレーススクリプトの作成、実行 (SQL Server 2005, 2008, 2008 R2)
24. HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法
25. Oracle 経験者のための SQL Server HowTo #1: 拡張イベントを使って On-Error Dump を取得する
26. Oracle 経験者のための SQL Server HowTo #2: サーバートレースを使ってセッション・レベルのSQLトレースを取得する
27. オンプレミスのSQL Server データベースのバックアップ先としてクラウドを活用しよう
28. PowerPivot for Excel: SQL Server 認証ユーザーのパスワード保存について
29. デッドロックを避けるコツ

Topへ

========================

■1. 一般情報 – d. 若葉マークブログ

現在作成中です。

Topへ

========================

■1. 一般情報 - e. Known issue

1. KB 2007728 - Error message when you use SSL for connections to SQL Server: "The cer ...
2. IEの制限の影響によりWCF Data Services クライアントにおいて、300秒で'System.InvalidOperationException'が発生することがある
3. [Windows XP] 暗号化された SQL Server Compact Edition データベースに対してアクセス遅延が発生することがある
4. Known Issue: SQL Server 2008 フェールオーバクラスタのアンインストールに失敗する
5. クエリ ビルダーで作られたクエリを実行すると構文エラーが発生する
6. [*.rdlc] エクスポートした PDF の文字化け ~ 確認ポイントの鍵はシステム構成要素にあり ~
7. osql での DBCC CHECKDB 結果に "SQLGetDiagRec failed" が大量に出力される
8. SQL Server Profiler ツールの LoginName 列に無効化している“sa” ログインが出力される
9. SQL Server 起動完了後のエラー 18456 「ユーザー 'XXX' はログインできませんでした。 理由: 明示的に指定されたデータベースを開けませんでした。」
10. Known Issue: SQL Server 2008/SQL Server 2008 R2 インストール時に "Visual Studio - VsTemplat ...
11. SQL Server 2008 および SQL Server 2008 R2 の不具合修正情報の公開 – 照合順序のバージョンが 90 の場合、誤った実行結果が返ってくる事象に ...
12. Halloween Protection (HP) について
13. DBCC SHRINKFILE 実行時のメッセージ
14. データベースの所有者が確認できない影響
15. CLR オブジェクト開発時の注意点
16. 透過的なデータ暗号化 (TDE) 環境のミラーリングの構成でエラー 927
17. SQL Server 2005 Management Studio の [ログインをロックアウトする] チェックを外した際の注意点について
18. FAQ:実行時間の長い I/O を示すエラー833について
19. 状態 または エラー ID が 29 のエラー 18056
20. エラー666
21. SQL Server 2012 BCP ユーティリティ 使用時の警告 “フォーマット ファイルを使用して BCP インポートを行うと、区切り列内の空の文字列が NULL に変換 ...
22. SQL Server 2000 MSDE から 上位バージョンへのアップグレードについて
23. SQL Server 2012 構成ファイルの分散再生クライアントのオプションについて
24. NVARCHAR/NCHAR データ型の列に格納されるデータが?になる

Topへ

========================
■1. 一般情報 - f. SQL Connectivity

1. Troubleshooting Connectivity #1 - SQL Server への接続
2. Troubleshooting Connectivity #2 - エラー情報からわかる失敗原因
3. Troubleshooting Connectivity #3 - 予期しない接続切断
4. Troubleshooting Connectivity #4 - 接続エラーの調査方法
5. Troubleshooting Connectivity #5 - セッション確立までの動作
6. Troubleshooting Connectivity #6 - 接続タイムアウトは悪なのか?
7. [SQL Connectivity] Case Study : クラスタ化された構成の SQL Server 2008 Service Pack 1 以前のバージョンの名前付き ...
8. [SQL Connectivity] Case Study : 認証 DC ダウン時の SSPI エラーについて
9. [SQL Connectivity] 名前付きパイプでの接続時トラブルシューティング

Topへ

========================

■2. SQL Server エンジン – a. ツール

1. [SDP] 情報採取ツール Support Diagnostic Platform
2. Kerberos Configuration Manager for SQL Server
3. SQL Server 2012 BCP ユーティリティ 使用時の警告 “フォーマット ファイルを使用して BCP インポートを行うと、区切り列内の空の文字列が NULL に変換 ...
4. HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法
5. Oracle 経験者のための SQL Server HowTo #1: 拡張イベントを使って On-Error Dump を取得する
6. Oracle 経験者のための SQL Server HowTo #2: サーバートレースを使ってセッション・レベルのSQLトレースを取得する
7. [SSMA] SSMA の動作環境についての推奨
8. [SSMA] SSMA for Oracle Extension Pack インストール時に「スカラー変数 “xxx” を宣言してください。」エラーが発生する。
9. SQL Server Profilerを使用して、取得したPowerPivot 実行時のトレースを確認する方法
10. Known Issue: SQL Server 2008/SQL Server 2008 R2 インストール時に "Visual Studio - VsTemplat ...

Topへ

========================

■2. SQL Server エンジン – b. 機能

1. recovery interval 構成オプションは何を指定するオプションなのか
2. 照合順序 - 文字の比較と並び順 (その 1)
3. DOPは並列クエリで使用されるスレッド数ではない
4. SQL Server 2012/2008 R2 新機能: 列変更カウンタ (colmodctr)
5. クエリタイムアウト - その仕組み
6. SQL Server のメモリ管理 - Part 4
7. SQL Server のメモリ管理 - Part 3
8. SQL Server のメモリ管理 - Part 2
9. SQL Server のメモリ管理 - Part 1
10. 排他ロックヒントを指定した行の列を読み取れる動作について
11. SQL Server 2012 におけるパーティションインデックス再構築時の統計情報更新
12. NUMERIC/DECIMAL の演算結果の有効桁数と小数点以下桁数
13. SQL Server における数値定数 2147483647 と 2147483648 の違い
14. DATETIME データ型のミリ秒に関する注意事項
15. FAQ: 32-bit/64-bit SQL Server 間でのユーザーデータベースの移動は可能?
16. FAQ: SQL Server 起動後、接続が可能となるタイミングは?
17. SQL Server へのメモリ割り当てを減らすと tempdb 使用量が増える??
18. 統計情報の自動更新が ON の時には統計情報を手動で更新する必要はない?
19. 変数とパラメータの違い
20. CXPACKET 待ちは悪いことか?
21. インデックス再構築と再構成の違い
22. LSN とは?
23. 断片化について
24. インテントロックとは?
25. NVARCHAR/NCHAR データ型の列に格納されるデータが?になる

Topへ

========================
■2. SQL Server エンジン – c. SQL トラブルシューティング

1. SQL Server セットアップトラブルシューティング – 初級編
2. [SQL Troubleshooting] SQL Server トラブルシューティング 6 回シリーズのご案内
3. [SQL Troubleshooting] 第1回 : Tips - SQL Server エラーログとイベント ログを採取する (SQL 2000 ~ 2008 R2)
4. [SQL Troubleshooting] 第2回 : Tips -パフォーマンス ログの採取方法 (Windows Server 2003 ~ Windows Server ...
5. [SQL Troubleshooting] 第3回 :パフォーマンスログの確認方法について
6. [SQL Troubleshooting] 第4回 サーバートレースの解析方法 – (1)
7. [SQL Troubleshooting] 第5回 サーバートレースの解析方法 – (2)
8. [SQL Troubleshooting] 第6回:ブロッキング情報を採取する (SQL Server 2000 ~ 2008 R2)
9. どうする? SQL Server のクエリ パフォーマンスが低下した!
10. オンプレミスのSQL Server データベースのバックアップ先としてクラウドを活用しよう
11. PowerPivot for Excel: SQL Server 認証ユーザーのパスワード保存について
12. デッドロックを避けるコツ
13. デッドロック調査用の情報採取
14. バックアップが存在しない、または、バックアップからのリストアが行えない場合のデータベース復旧手順
15. 破損したデータベースからのデータ抜き出し方法

Topへ

========================
■2. SQL Server エンジン – d. インストール/アップグレード/アンインストール

1. SQL Server 2008 R2 SP2 適用後のクエリ動作について
2. SQL Server 2000 MSDE から 上位バージョンへのアップグレードについて
3. SQL Server 2012 構成ファイルの分散再生クライアントのオプションについて
4. スクリプト アップグレード モード
5. SQL Server セットアップトラブルシューティング – 初級編
6. PowerPivot for SharePoint のサービスパックを適用する方法
7. SQL Server の手動アンインストール手順
8. SQL Server 2008 R2 Service Pack のクラスター環境への適用手順

Topへ

========================

■3. SQL Database (Azure)

1. [Windows Azure] ゲスト OS アップグレード後、ゲスト OS 上のSQL Server Native Client を使用している WebRole/Worker ...
2. Windows Azure で、Web ロールで特定のバージョンの SQL Server Native Client を常に使えるようにする方法
3. [Windows Azure SQL Reporting] Visual Studio でファイルエクスポートをするプログラムを書いてみよう
4. Windows AzureのIaaS機能でSQL Serverを使ってみよう
5. [SQL Database] デッドロックの調査方法について
6. [SQL Database] 接続タイムアウトの発生を改善したい
7. [SQL Database] Insert クエリにおいて使用制限されている Table ヒントについて
8. SQL Azure 高可用性を保持するための仕組み
9. WebロールからWindows Azure SQL Database にアクセスする (3/3) : Azure 管理者ポータルを使用したストレージの作成と Web ロールの配置
10. WebロールからWindows Azure SQL Database にアクセスする(2/3) : EDM を作成しよう
11. WebロールからWindows Azure SQL Database にアクセスする (1/3) : Azure 管理者ポータルを使用したテーブルの作成
12. Windows Azure で、Web ロールで特定のバージョンの SQL Server Native Client を常に使えるようにする方法
13. [SQL Database] 照合順序を指定したデータベース作成方法について
14. SQL Database にてスクリプトの生成が行えない
15. NVARCHAR/NCHAR データ型の列に格納されるデータが?になる

Topへ

========================

■4. Analysis Services

1. [SSAS] SQL Server Analysis Services トレース採取方法
2. Analysis Services のデータが '-0'(マイナスゼロ)と表示される
3. Known Issue: NullProcessing プロパティを Preserve にすると「Preserve は、個別のカウント メジャー 'XXXX' の有効な Nul ...
4. SQL Server 2005,2008,2008 R2 Analysis Services Standard エディションにおける使用可能な関数について

Topへ

========================

■5. Reporting Service

1. [SSRS] Reporting Services サービスが起動しない
2. [SSRS] HTML 形式で表示したレポートと PDF や印刷で表示したレポートの見栄えが異なる。対処方法は!?
3. [SSRS] SharePoint 統合モードのレポートサーバー構築手順 (単一サーバー) - SQL Server 2012 と SharePoint 2013 の組み合わせ)
4. [SSRS] SharePoint 統合モードのレポートサーバー構築手順 (単一サーバー) - SQL Server 2008 と SharePoint 2010 の組み合わせ)
5. [SSRS Troubleshooting] SQL Server Reporting Services トラブルシューティングのご案内
6. [SSRS]Reporting Services 使用時の TERADATA 拡張機能エラー
7. [SSRS] Reporting Services 文字化け:異なる OS 間の PDF 文字化け
8 [SSRS] レポートパラメータの位置や順序を変更できるか
9. [SSRS] Reporting Services の詳細ログ
10. [SSRS] SharePoint 統合モードのレポートサーバー構築手順 (単一サーバー) - SQL Server 2012 と SharePoint 2010 の組み合わせ)
11. [SSRS] SQL Server 2008 Reporting Services 不具合情報 – 1月1日に発生する イベント ID 123 について
12. [SSRS] [SQL Server 2008 以降のバージョン] ReportViewer のレポート表示後、印刷ボタン(アイコン)を押下すると「クライアントの印刷コントロー ...
13. [SSRS] Response.Redirect でページ遷移すると画像が見えなくなる(deleteAfterServicing パラメーター)
14. [SSRS] SQL Server 2008 Report Services で 3 つ以上のカスケード型レポートパラメータを設定したレポートを表示した場合、カスケード型レポー ...
15. Reporting Services のレポートで印刷を行うと「クライアントの印刷コントロールを読み込めません。」のエラーが発生する
16. Known Issue: Reporting Services への初回アクセス時に、レポート表示に時間がかかる。
17. How To:Reporting Services のレポートをコマンドで配置する方法
18. SQL Server 2008 R2 Reporting Services 不具合情報 – “値 'x' は無効です。有効な値は、'xx' から 'xxx' です。”
19. SQL Server 2008 以降の Reporting Services で総ページ数表記が “?” になる
20. SQL Server Reporting Services カスタムアセンブリの設定方法

Topへ

========================

■6. データアクセス – a. ADO.NET

1. [ADO.NET] DataGridView 内のデータ編集とそのときのバインドした DataTable の動作
2. [ADO.NET/SNAC] イニシャル パートナーがダウンしている場合、フェールオーバー パートナーに接続できる確率を高める方法
3. 「タイムアウトに達しました。プールから接続を取得する前にタイムアウト期間が過ぎました。プールされた接続がすべて使用中で、プール サイズの制限値に達した可能性があります。」エラー ... 4
4. DO’s&DONT’s #18: やった方がいいこと - .NET Framework アプリケーションでパラメータクエリを実行する場合にはパラメータのデータ型やサイズ ...

Topへ

======================== 

■6. データアクセス – b. ADO

1. KB 2517589 / 2640696 : Win7 SP1 上でビルドした ADO を参照するプログラムが下位バージョン OS 上で動作しない現象と対処方法 (Ver 2.1)
2. Known Issue: ADO アプリケーションを Windows Server 2008 上で動作させると「要求された名前、または序数に対応する項目がコレクションで見つかり ...

Topへ

======================== 

■6. データアクセス – c. JDBC

1. [JDBC] JDBC ドラ��バーの Java 7 対応について
2. Microsoft SQL Server JDBC Driver は Android OS をサポートしない

Topへ

======================== 

■8. Integration Services

1. Known Issue: SSIS パッケージの TransactionOption オプションを Required とすると、パッケージの動作が停止しているように見える。
2. 64 bit 環境上における Oracle からデータ取得する Integration Services プロジェクト (SSIS パッケージ) の注意事項 - 開発編

Topへ

========================

■9. イベント・お知らせ

1. [Info] 毎週水曜日はサポート・サービスデイ ~ 調布でお待ちしています ~(※オンラインも可能です!!)
2. [皆様のご意見募集しております!]サーバーおよびツール製品に関するインターナショナルユーザー アンケート 2013~「ローカライズについてモノ申したい方、大募集です!~」
3. 壁紙追加されました![期間限定Info]Windows Server 2012 先得早割キャンペーン(吉田健一氏コラボ壁紙全員プレゼントです!)
4. [重要なお知らせ] 2012 年 7 月 2 日 (月) から技術サポート窓口時間が変更になります
5. SQL PASS Summit 2011 at Seattle
6. db tech showcase 2012

Topへ

バックアップが存在しない、または、バックアップからのリストアが行えない場合のデータベース復旧手順

$
0
0

 

データベースが破損しエラーが返されたり、アクセスできないといった状況が発生した場合、バックアップからリストアするという対処がもっとも一般的かつ確実な対応であり、SQL Server サポートでは、通常、バックアップからのリカバリ手順をご案内しております。しかしながら、バックアップを採取していなかったり、バックアップからのリストアに失敗したという場合もあります。 今回は、そのようなバックアップからのリストアが行えない場合のデータベースの修復方法を紹介します。

 

 

※ 注意事項 ※  

  • 以下の手順は検証済みの手順ですが、必ずしもデータベースの復旧を保証しているものではありません。手順の実施につきましては、自己責任において行ってください。  
  • データベースの破損状況によっては、以下で紹介する修復手順を実施しても、データベースに接続でき、アプリケーションが実行できるまでの状態に復旧できない場合もあります。その場合はデータベースの再作成が必要となります。      
  • 本手順を実施すると、トランザクションの一貫性が失われる場合があります。トランザクションの一貫性が保たれているかどうかの確認は、対象データベースに格納されているデータ間の関連性を熟知している方、もしくは、この手順を実施する方の責任において実施する必要があります。トランザクションの一貫性が保たれているかどうかの確認が行えない場合には、この手順を実施しないで下さい。
         

 

また、SQL Server サポートサービスにて、可能な限りデータベースを復旧するサポートを承っております。必要に応じてご利用下さい。

   

■修復手順

 

1. 対象データベースのファイルコピーを行います。

SQL Server サービスを停止し、対象データベースファイルのファイルバックアップ(別フォルダにデータベースファイルをコピー)を行います。

データベースファイル、ログファイルのファイルパスは以下のクエリにて確認可能です。以降の手順で予期しない問題が発生した場合、このファイルを用いて手順 1. の状態まで戻すことができます。バックアップ完了後、SQL Server サービスを再起動します。

 

         
select d.name as databasename,f.name as filename ,f.physical_name as filepath           
from sys.master_files f,sys.databases d where d.database_id = f.database_id 
GO       

 

2. Microsoft SQL Server Management Studio を起動し、sa 等の管理者権限をもつ sysadmin ロールメンバとして SQL Server へ接続します。

 

3. [新しいクエリ] を選択します

 

4. 下記のコマンドを実行し、整合性を確認します。

 

DBCC CHECKDB([データベース名])           
GO
       
          

 

データベースが「未確認」状態、「復旧待ち」状態である場合は、上記コマンドは実行できません。 その場合は、下記のように、対象データベースを緊急モードに変更後、DBCC CHECKDBコマンドを実行します。     

 

USE master      
GO      
ALTER DATABASE [データベース名] SET EMERGENCY      
GO      
DBCC CHECKDB([データベース名])    
GO
        

 

緊急モードに変更することにより、システム管理者はデータベースに読み取り専用でアクセスできるようになります。

 

5. 出力された結果を確認します。

DBCC CHECKDB コマンド結果に、エラーメッセージが含まれる場合は、そのエラーに対する対処が必要です。


最小修復レベル

メッセージ

対処

エラーなし

CHECKDB により、データベース '****' に 0 個のアロケーション エラーと 0 個の一貫性エラーが見つかりました。

エラーが 0 個であるため、データベースは破損しておらず、整合性に問題はないため、このまま使用して問題ありません。

repair_rebuild

CHECKDB により、データベース '****' に 0 個のアロケーション エラーと 2 個の一貫性エラーが見つかりました。
repair_rebuild は DBCC CHECKDB (****) で見つかったエラーの最小修復レベルです。

データベースは破損しており、修復が必要です。この場合、データの消失なく修復可能です。

repair_allow_data_loss

CHECKDB により、データベース '****' に 2 個のアロケーション エラーと 2 個の一貫性エラーが見つかりました。
repair_allow_data_loss は DBCC CHECKDB (****) で見つかったエラーの最小修復レベルです。

データベースは破損しており、修復が必要です。ただし、データの消失を伴う修復が必要です。

 

repair_rebuild、repair_allow_data_loss を指定した DBCC CHECKDB による修復については、以下の点に注意が必要です。

   1. テーブル間に制約があっても考慮されない。

   2. repair_rebuild オプションを指定した場合、File Stream に関わるエラーは修復されない(すべてのエラーが修復されるわけではない)。

   3. repair_allow_data_loss オプションを指定した場合、トランザクションの一貫性が失われる可能性がある。破損したデータは削除され、DBCC CHECKDB では、どのデータが削除されたかは示されない。

     

    以上のとおり、DBCC CHECKDB により修復を行ったとしても、必ずしも元通りの状態になるわけではありません。上記オプションを使用してデータベースの修復を行い、データベース自体の整合性エラーがなくなったとしても、そのデータベースをアプリケーションで利用できるとは限りません。修復したデータベースを用いて問題なくアプリケーションが利用可能かどうかは、ユーザー自身で確認する必要があります。 アプリケーションで利用できなかった場合はデータベースの再構築が必要となる場合もあります。

    そのため、DBCC CHECKDB に修復オプションを指定したデータベース修復は、バックアップ等も用いた復旧が行えない場合の最後の手段であり、テーブル間の関連性やデータの内容を熟知しており、DBCC CHECKDB による修復後、その結果を確認できる方が責任を持って行う必要があります。

    削除されたデータについてマイクロソフトに問い合わせいただいても、どのようなデータが削除されたのかについては確認することはできません。

     

    6. DBCC CHECKDB 結果に出力されたオプションを利用して、データベースの修復を実施します。

    まず、シングルユーザーモードに変更します。

     

    ALTER DATABASE [データベース名] SET SINGLE_USER           
    GO            

     

    その後、修復オプションを指定した DBCC CHECKDB を実行します。DBCC CHECKDB に指定する修復オプションは、手順 4. で確認したオプションです

     

    DBCC CHECKDB('データベース名','REPAIR_ALLOW_DATA_LOSS')             
    GO

    または

    DBCC CHECKDB('データベース名','REPAIR_REBUILD')          
    GO

     

    データベースが緊急モードの状態で REPAIR_ALLOW_DATA_LOSS オプションを指定して DBCC CHECKDB を実行すると、トランザクション ログが壊れている場合には、トランザクション ログが再構築されます。ただし、トランザクション ログの再構築の結果、トランザクションの一貫性が失われる場合があります。

    また、DBCC CHECKDB が正常に終了した場合は、データベースの状態は ONLINE に設定されますが、データベースにはトランザクション上、一貫しない部分が 1 つ以上含まれる可能性があります。

    DBCC CHECKDB がエラーなく実行完了したとしても、次の手順 7. でエラーが検出される可能性があります。必ず、手順 7. の整合性確認チェックを行ってください。

    DBCC CHECKDB はすべてのエラーを修復できるわけではありません。DBCC CHECKDB が修復処理自体のエラーを報告した場合は、DBCC CHECKDB ではデータベースを修復することはできません。

     

    7. DBCC CHECKDB を修復オプションなしで実行し、エラーが存在しないことを確認します。

     

    DBCC CHECKDB('データベース名')               
    GO
                 

     

    DBCC CHECKDB コマンドにてエラーが検出された場合は、メッセージで示された修復オプションを指定した DBCC CHECKDB により、手順 6. および 7. をエラーがなくなるまで繰り返します。ただし、修復を繰り返しても報告されるエラー内容に変化がみられない場合、そのエラーは修復不可能なエラーです。

     

    8. DBCC CHECKDB コマンドでエラーが 0 になったことを確認後、下記のコマンドを実行し、制約に関する整合性をチェックします。

     

    USE [データベース名]           
    GO      
    DBCC CHECKCONSTRAINTS      
    GO                 

     

    上記手順 7. の DBCC CHECKDB は、データフォーマットに関するチェックは実施されますが、制約に関するチェックは行われません。そのため、修復対象のデータベースで FOREIGN KEY 制約や CHECK 制約を使用している場合は、データベースの修復完了後、DBCC CHECKCONSTRAINTS コマンドを実行し、制約の整合性についても確認する必要があります。

     

    9. データベースをマルチユーザーに戻します。


    ALTER DATABASE [データベース名] SET MULTI_USER           

     

    10. 必要に応じて下記のコマンドを実行し、該当のデータベースの復旧モデルを「完全」に戻します。

    上記手順 6. で REPAIR_ALLOW_DATA_LOSS 句を指定して DBCC CHECKDB コマンドを実行し、破損個所の復旧をおこなった場合、該当のデータベースの復旧モデルが「単純」へと変更されます。そのため、必要に応じてデータベースの復旧モデルを元の復旧モデルに戻します。      

         
    ALTER DATABASE [データベース名] SET RECOVERY FULL           
    GO             

     

    「一括ログ」モデルに戻す場合は、'ALTER DATABASE [データベース名] SET RECOVERY BULK_LOGGED' を実行します。

     

    以上でデータベースの修復作業は完了です。

    その後、削除されたデータの特定や、クライアントからの接続可否、アプリケーションからの使用に問題がないかどう可能かなど、そのシステムおよびアプリケーションの観点で問題がないかどうかについて確認します。

    また必ず「バックアップ」をご採取ください。

     

    破損したデータベースからのデータ抜き出し方法

    $
    0
    0

     

    前回ご案内したバックアップが存在しない、または、バックアップからのリストアが行えない場合のデータベース復旧手順では、バックアップを採取していなかったり、バックアップからのリストアに失敗したという場合のデータベースの修復方法をご案内しました。その中では、DBCC CHECKDB コマンドの修復オプションを用いてデータベースの修復を行いましたが、DBCC CHECKDB の修復オプションを用いてもデータベースを修復できない場合もあります。そのような場合は、データを抜き出して、そのデータを元にデータベースを再構築する以外にはありません。今回は DBCC CHECKDB コマンドの修復オプションでも復旧できない場合に、破損したデータベースから可能な限りのデータを抜き出すための方法をご案内します。

    ※ 注意事項 ※  
    • 以下の手順は検証済みの手順ですが、必ずしもデータをすべて抜き出せることを保証しているものではありません。手順の実施につきましては、自己責任において行ってください。  
    • 本手順を実施した後、インデックスの作成や外部キー(FK)の設定を行う必要がある場合もあります。そのため、本作業は、対象データベースに格納されているデータ間の関連性を熟知している方、もしくは、この手順を実施する方の責任において実施する必要があります。データ間の関連性が保たれているかどうかの確認が行えない場合には、この手順を実施しないで下さい。           

    また、SQL Server サポートサービスにて、可能な限りデータベースを復旧するサポートを承っております。必要に応じてご利用下さい。

    ■抜き出し手順

     

    1. 移行先となる新規データベースを作成します。

    Create Database データベース名               
    GO
    Use データベース名
    GO
    Alter database 'データベース名' set RECOVERY FULL 
    GO          

    2.以下のいずれかの方法にて、データの抜き出しを行います。


    方法特徴
    Export ウィザード破損データベースの複数のテーブルおよびデータを新規作成したデータベースへ直接コピー。
    Select into破損データベースの一つのテーブルを新規作成したデータベースへ直接コピー。
    bcp事前にテーブルを作成する必要あり。
    破損データベースの一つのテーブルを一度、テキストファイルに出力後、そのファイルを元に、新規作成したデータベース内の新規作成したテーブルにコピー。

    ※注意事項※
     

    いずれの方法も、アクセスできないデータにヒットした時点でエラーになります。

    それぞれの実行方法は以下の通りです。 

    1.Export ウィザード


    ※以降はSQL Server 2012 のSQL Server Management Studio での実行方法をご案内しております。 
    SQL Server インポートおよびエクスポート ウィザードを実行する
    http://technet.microsoft.com/ja-jp/library/ms140052.aspx

     

    a. 該当データベースを右クリックし、[タスク]-[データのエクスポート]メニューを選択します。

    image

     

    b. インポート/エクスポートウィザードが表示されるので、「次へ」を選択します。

    image

     

    c. データソース(破損データベース)を選択し、「次へ」を選択します。

        サーバー名は、破損データベースが存在するサーバー名を指定します。

    image

     

    d. コピー先(新規作成データベース)を選択し、次へを選択します。

      サーバー名は新規作成データベースのサーバー名を指定し、「次へ」を選択します。

    image

     

    e. コピー時のオプションを選択します。  

    ※以下では、「1つ以上のテーブルまたはビューからデータをコピーする」オプションを指定し、「次へ」を選択します。このオプションでは選択したテーブル、またはビューから全データをコピーします。

     

    image

     

    ※「1つ以上のテーブルまたはビューからデータをコピーする」オプションにてエラーが発生する場合、もしくは特定のカラムや、データのみ抜き出す場合は、「転送するデータを指定するためのクエリを記述する」オプションを指定します。

    「転送するデータを指定するためのクエリを記述する」オプションにて、クエリに Order by オプションを追加し、Desc、Asc 等を利用して、データを並べ替え、できるだけ多くのデータを抜き出すように検索します。また、クエリに Top 句を追加して最初から何件目を検索するいう方法も有効です。

    実行例:クラスタ化インデックスが設定している、200行存在するテーブルにて、101行目でエラーが発生した場合、100行目までを抜き出す場合


    --100行目までを抜き出すクエリ
    select Top 100
    * from 元のデータベース名.スキーマ名.元のテーブル名  Order by ***  Asc

    --102行目以降を抜き出すクエリ        

    select Top 99 * from 元のデータベース名.スキーマ名.元のテーブル名  Order by ***  Desc

        


    image

     

    f. コピー元のテーブルおよびビューを選択画面にて必要なテーブル、ビューを指定し、「次へ」を選択します。

    image


    g. パッケージの保存および実行画面にて「すぐに実行する」オプションを指定し、「次へ」を選択します。

    image


    h. 「完了」ボタンを選択すると、データコピーが始まります。


    2.select into 

     

    a. SQL Server Management Studioを起動し、該当インスタンスで管理権限にて接続します。

    b. 「新規クエリ」を選択します。

    c. 抜き出しするテーブルのスキーマを事前に作成します。

    d. 以下のクエリを各テーブル毎に実行します。
      

    select * into 新規データベース名.スキーマ名.テーブル名 from 破損データベース名.スキーマ名.元のテーブル名
    go
     


    全件検索にてエラーが検出された場合は、クエリに Order by オプションを追加し、Desc、Asc 等を利用して、データを並べ替え、できるだけ多くのデータを抜き出すように検索します。また、クエリに Top 句を追加して最初から何件目を検索するいう方法も有効です。


    実行例:クラスタ化インデックスが設定している、200行存在するテーブルにて、101行目でエラーが発生した場合、100行目までを抜き出す場合

         

    --件数確認
    select count(*) from 破損データベース名.スキーマ名.元のテーブル名                
    go

    --エラーが発生するデータ行を確認
    select * from 破損データベース名.スキーマ名.元のテーブル名
    go

    --100行目までを抜き出して、新規データベースに格納
    select Top 100 * into 新規データベース名.スキーマ名.テーブル名 from 破損データベース名.スキーマ名.元のテーブル名  Order by ***  Asc
    go

    --102行目以降を、新規データベースに格納
    select Top 99 * into 新規データベース名.スキーマ名.テーブル名 from 破損データベース名.スキーマ名.元のテーブル名  Order by ***  Desc
    go

     

    3. bcp      

         
    bcp ユーティリティ
    http://msdn.microsoft.com/ja-jp/library/ms162802.aspx

     
    a. コマンドプロンプトを起動します。

    b. 以下のいずれかのコマンドを各テーブルに対して実行し、エクスポートを行います。

    --テーブル内のデータをすべて出力するとき
    >bcp 破損データベース名.スキーマ名.テーブル名 out 出力先ファイル.dat -T –r –t –c


    --テーブル内のデータをすべて出力してエラーが発生した時は、以下のようにqueryoutオプションを使用します。             
    >bcp  "SELECT TOP * FROM 破損データベース名.スキーマ名.テーブル名 order by *** Desc" queryout 出力先.dat  out -T –r –t –c    


    実行例:クラスタ化インデックスが設定している、200行存在するテーブルにて、101行目でエラーが発生した場合、100行目までを抜き出す場合
     

      --100行目までを抜き出すクエリ
    >bcp “select Top 100 * from 破損データベース名.スキーマ名.テーブル名  Order by ***  Asc"queryout 出力先.dat  out -T –r –t –c
           


       --102行目以降を抜き出すクエリ
    >bcp “select Top 99 * from 破損データベース名.スキーマ名.元のテーブル名  Order by ***  Desc "
    queryout 出力先.dat  out -T –r –t –c      


    c. 新規データベースに対し、抜き出しするテーブル、および、スキーマを事前に作成します。

    d. b. にてエクスポートしたデータを、c.にインポートします。           

    >bcp 新規データベース名.スキーマ名.テーブル名 in 出力先ファイル.dat -T –r –t –c

     

    3.  すべてのテーブルにインポートが完了したら、DBCC CHECKDB コマンドを実行し、整合性に問題がないことを確認します。

    以上でデータの抜き出し作業は完了です。

    その後、クライアントからの接続可否、アプリケーションからの使用に問題がないかどう可能かなど、そのシステムおよびアプリケーションの観点で問題がないかどうかについて確認します。

    また、必ず「バックアップ」をご採取ください

    Backup Database データベース名 to disk = ‘バックアップ先ファイル.bak'

    2013 年 11 月 SQL Server 最新モジュール

    $
    0
    0

    2013 年 11 月 19 日時点の SQL Server 最新モジュールです。

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2012

    SP1

    KB 2894115(CU7)

    11.0.3393

    2013/11

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

    SQL Server 2008 R2

    SP2

    KB 2887606 (CU9)

    10.50.4295

    2013/10

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

    SQL Server 2008

    SP3

    KB 2893410 (CU14)

    10.00.5848

    2013/11

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

    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 の更新プログラムを参照して下さい。

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

    [若葉マークブログ] 第 1 回 : トランザクションとは

    $
    0
    0

    みなさん、こんにちは。若葉マークブログという事で、SQL Server 初心者の方々へ向けて、第 1 回はトランザクションの基本についてお話したいと思います。

    SQL Server を扱っていると、「トランザクション」という言葉を日常的によく耳にすると思います。

    トランザクションとは、関連する複数の処理を 1 つの処理単位としてまとめたもので、この処理単位でデータベースへの反映がおこなわれます。

    下図のような銀行振り込みの例を考えてみましょう。  

    A さんが銀行の ATM を使って、自分の 2 つの口座 の「口座 1 」 から「口座 2 」に 50,000 円 を振り込もうとしています。

    口座 1 には現在は 300,000 円 の預金があり、口座 2 には 100,000 円の預金があります。

    振り込みをおこなうと、口座 1 は 50,000 円引かれるので 250,000 円、口座 2 は 50,000 円足されるので 150,000 円になるはずです。

    しかしここでハプニングが発生しました。振り込みの操作をしている最中に突然 ATM の機械が故障して停止してしまったのです。

    故障した ATM の復旧には時間がかかるため、他の ATM を利用してほしいと銀行の人から言われた A さんは、隣の ATM から振り込みがどうなったかを確認してみました。

    すると、口座 1 は 300,000 円 、口座 2 は 100,000 円という振り込み前の預金額に戻っていました。

    A さんは正常に動作している ATM から再度振り込みをおこない、今度は無事に完了することができました。

    ここに「トランザクション」の活躍があります。

    もしトランザクションが存在しなかったら、「口座 1 からは 50,000 円引かれていたが、口座 2 には 50,000 円が足されていなかった」という大変な事態が発生する可能性があります。  

    上記の銀行振り込みの例では、「口座 1 から 50,000 円引く、その後で口座 2 に 50,000 円足す」という処理が、一つの処理単位(トランザクション)としてまとめられています   
    そのため、操作中に ATM が故障して「口座 1 から 50,000 円引く」という処理が完了した時点で ATM の機械が故障して停止してしまったとしても、「その後で口座 2 に 50,000 円足す」という処理が正常に完了していないため、トランザクションは ロールバック (rollback : 巻き戻し)されて振り込み処理の実行前の状態に戻ったのです。 

    「口座 1 から 50,000 円引く、その後で口座 2 に 50,000 円足す」という一連の処理が正常に完了した場合にのみ、振り込みの処理はコミット (commit : 確定) されてデータベースに反映されます。

     

    ■ロールバックとコミット

    上記の銀行振り込みの例では、ATM の機械が故障して停止してしまった時点で「その後で口座 2 に 50,000 円足す」という処理が正常に完了していなかったため、「口座 1 から 50,000 円引く」という正常に実行された処理も含めてトランザクション全体が ロールバックされました。

    「ロールバック」とは「巻き戻し」の意味で、データベースでデータの更新が正常に完了しなかった際に更新前の状態にまで戻ることをいいます。

    ロールバックはトランザクション単位で行われるため、「口座 1 から 50,000 円引く、その後で口座 2 に 50,000 円足す」というトランザクションがロールバックされて、「口座 1 からは 50,000 円引かれていたが、口座 2 には 50,000 円が足されていなかった」という大変な事態を回避できたのです。  

    また、上記の銀行振り込みの例の最後で、A さんは ATM から再度振り込みをおこない、無事に完了することができましたが、この時には「口座 1 から 50,000 円引く、その後で口座 2 に 50,000 円足す」という一連の処理が正常に完了したため、振り込みの処理はコミットされてデータベースに反映されています。

    「コミット」とは「確定」の意味で、トランザクションの一連の処理が確定されてデータベースに反映されます。

    コミット後は、トランザクションをロールバックすることはできません。

     

           

        ★ 若葉マークブログ シリーズのご案内 ★   

             本記事は、第 1 回となります。 

     第 1 回 : トランザクションとは   

     第 2 回 : ロックとは   

     

       
     
       
       



    [若葉マークブログ] 第 2 回 : ロックとは

    $
    0
    0

    みなさん、こんにちは。若葉マークブログの第 2 回は、ロックの基本についてお話したいと思います。

     若葉マークブログの第 1 回は、トランザクションの基本についてお話しました。
    トランザクションについてまだ十分に理解されていない方は、本 Blog をお読みになる前に [若葉マークブログ] 第 1 回 : トランザクションとはをご参照いただくことをお勧めいたします。

    トランザクションと同様に、「ロック」という言葉も SQL Server を扱っていると日常的によく耳にすると思います。

     

    ■ロック (Lock) とは

    トランザクション (関連する複数の処理を 1 つの処理単位としてまとめたもの) は、 1 つずつ実行されるのであれば、データは矛盾のない状態に保たれます。
    しかし、SQL Server では同時に複数のユーザーが接続し、複数のトランザクションが並行して実行されています。
    そのため、同じデータが同時に更新される可能性があり、もしこのような状況が発生するとデータに矛盾が生じてしまいます。

    若葉マークブログ第 1 回 のトランザクションの場合と同様に、銀行口座の例を考えてみましょう。

    A さんは翌日、銀行の ATM を使って、再度自分の 2 つの口座 の「口座 1 」 から「口座 2 」に 50,000 円 を振り込むことにしました。
    口座 1 には現在は  250,000 円 の預金があり、口座 2 には 150,000 円の預金があります。

    振り込みをおこなうと、口座 1 は 50,000 円引かれるので 200,000 円、口座 2 は 50,000 円足されるのでこちらも 200,000 円になるはずです。

    ところが A さんが振り込み完了後 に  2 つの口座の預金額を確認したところ、口座 1 は 190,000 円、口座 2 は  200,000 円になっていました。
    口座 1 から 10,000 円が余計に引かれてしまったのです。

    しかし通帳記入をしてみて、A さんは納得しました。

    振り込みの操作をしている間に、本日引き落とし予定だった通販で購入した毛布の代金が引き落とされていたのです。

    ここに、「ロック」の活躍があります。
    ロックは、データを参照または更新しているときに、他のトランザクションから同時に更新されないようにデータを保護する機能です。
        
    振り込み処理と毛布代の引き落とし処理は、下図のようにおこなわれます。


    振り込みトランザクションが更新対象のデータにロックをかけます。

    毛布代トランザクションも同じデータを更新するためにロックをかけようとしますが、該当のデータは既に振り込みトランザクションによってロックされているため、毛布代トランザクションはロック待ち状態 (ブロッキング)が発生します。

    振り込みトランザクションが更新を完了するとロックが解放され、ロック待ち状態となっていた毛布代トランザクションが、更新のためにロックをかけられるようになります。

    このロックのおかげで、振り込み処理によって口座 1 から 50,000 円が引かれて 200,000 円になった後で毛布代の引き落とし処理がおこなわれ、口座 1 は最終的に 190,000 円という正しい預金額になったのです。

    もしロックが存在しなかったら、口座 1 は 240,000 円、口座 2 は 200,000 円の預金額になる可能性があります。

              

    振り込みトランザクションが口座 1 の現在の預金額 (250,000 円) を読み込みます。
    毛布代トランザクションも口座 1 の現在の預金額 (250,000 円)を読み込みます。

    振り込みトランザクションが現在の預金額から 50,000 円を引き、預金額を 200,000 円に更新します。
    その後、毛布代トランザクションが現在の預金額から 10,000 円を引き、預金額を 240,000 円に更新します。

    その結果、振り込みの 50,000 円は口座 1 から引かれずに、毛布代の 10,000 円のみが引かれた状態になり、データに矛盾が発生してしまいます。
    ( A さんとしては 10,000 円のみが引かれた状態になったほうが嬉しいかもしれませんが。。。)

    このように、ロック機能は複数のユーザーが同時に利用するデータベースにとって欠かせない機能です。

     

    ■ブロッキング

    上記の例では、毛布代トランザクションが同じデータを更新するためにロックをかけようとした際に、該当のデータが既に振り込みトランザクションによってロックされているため、毛布代トランザクションはロック待ち状態になりますが、このロック待ち状態のことを「ブロッキング」といいます。

    ブロッキングは複数のトランザクションが並列実行されるデータベースにおいて、データを矛盾のない状態に保つための必要不可欠な事象ですが、SQL Server を使用するにあたり、ブロッキングは最小限に留めるように意識する必要があります。
    その理由は、長時間のブロッキングはシステム全体のパフォーマンスに悪影響が出るためです。

    また、ブロッキングが複数構成されることにより、「デッドロック」という事象が発生しやすくなります。
    デッドロックについては本 Blog では取り上げませんが、複数のトランザクションがお互いにロックの解放を待っている状況であり、SQL Server では Deadlock Monitor がこの状況を検出し、解消する役割を担っています。

    ブロッキングを最小限に留めるためには、「必要最小限のデータのみにアクセスすること」を心がけることが重要です。

    このことを意識することによって、ロックを獲得する範囲を最小にし、アクセスするデータ量が少なくなってロックを保持している時間も短くなり、ブロッキングが発生する可能性を低くすることができます。

    そしてデッドロックが発生する可能性も低くなり、トランザクションの実行時間も短くなって、結果としてシステム全体のパフォーマンス向上につながっていきます。

    <参考情報>

    ○デッドロックを避けるコツ
    http://blogs.msdn.com/b/jpsql/archive/2011/03/31/tips.aspx

    ○[SQL Troubleshooting] 第6回:ブロッキング情報を採取する (SQL Server 2000 ~ 2008 R2)
    http://blogs.msdn.com/b/jpsql/archive/2012/07/24/sql-troubleshooting-6-sql-server-2000-2008-r2.aspx

     

     

          ★ 若葉マークブログ シリーズのご案内 ★

               本記事は、第 2 回となります。

     第 1 回 : トランザクションとは

     第 2 回 : ロックとは

     

     

     

    クラスター環境にSQL Server をインストールする際、MSDTC をクラスター化する必要があるか?

    $
    0
    0

    フェールオーバークラスター環境にSQL Server をインストールする際に以下のお問い合わせをいただくことがあります。


    フェールオーバークラスター環境に SQL Server をインストールする際、MSDTC はクラスター化する必要があるか?


    Books Online には以下のように記載されています。

    フェールオーバー クラスタリングをインストールする前に

    http://technet.microsoft.com/ja-jp/library/ms189910(v=SQL.105).aspx


    -----------抜粋はじめ

    Microsoft 分散トランザクション コーディネーターのインストール

    フェールオーバー クラスターに SQL Server をインストールする前に、Microsoft 分散トランザクション コーディネーター (MSDTC) クラスター リソースを作成する必要があるかどうかを判断します。データベース エンジンだけをインストールする場合、MSDTC クラスター リソースは必要ありません。データベース エンジンと SSIS やワークステーション コンポーネントをインストールする場合、または分散トランザクションを使用する場合は、MSDTC のインストールが必要です。Analysis Services のみのインスタンスには MSDTC は必要ありません。

    Microsoft 分散トランザクション コーディネーターの構成

    オペレーティング システムをインストールしてクラスターを構成した後で、クラスター アドミニストレーターを使用して、クラスター内で機能するように MSDTC を構成する必要があります。MSDTC のクラスター化に失敗しても SQL Server セットアップは中断しませんが、MSDTC が適切に構成されていない場合は SQL Server のアプリケーション機能に影響が生じる可能性があります。

    -----------抜粋終わり

    今回は上記に補足します。
         
             
    MSDTC とは?
             


    MSDTC は Microsoft Distribution Transaction Coordinator の略で、Windows に標準でインストールされている分散トランザクションを管理する機能となります。
    Windows Server 2012 では、「コントロールパネル」-「システムとセキュリティ」-「管理ツール」-「コンポーネントサービス」-「コンピュータ」- 「マイコンピュータ-」-「Distribution Transaction Coordinator」 にて確認可能です。

     

    image


    SQL Server では、複数のリソース(データベース、アプリケーション等)にまたがったトランザクション(分散トランザクション)の実行が可能です。 この場合、複数のサーバーで意図した結果を得られなかった場合、各リソースの結果に不整合が起きないように、各リソースで得られた結果を元に、Commit (確定) するのか、Rollback(元に戻す)するのか、コーディネートを行う役目が必要です。 MSDTC はその役目を担っています。
       

    MSDTC のクラスター化の条件        

    改めて、クラスター化の条件について確認します。 
     

    Windows VersionSQL Server VersionMSDTC サービスの有効化MSDTC のクラスター化
    Windows Server 2003 / Windows Server 2003 R2 SQL Server 2005 以上必須必須
    Windows Server 2008 / Windows Server 2008 R2SQL Server 2005 以上SSIS、ワークステーションコンポーネントをインストールする場合は必須。必須ではないが、
    分散トランザクションを使用する場合は推奨。
    Windows Server 2012 / Windows Server 2012 R2SQL Server 2008 以上SSIS、ワークステーションコンポーネントをインストールする場合は必須。必須ではないが、
    分散トランザクションを使用する場合は推奨。

     
    つまり、MSDTC のクラスター化の条件は、Windows のバージョンに依存します。

    SQL Server をインストールするには MS DTC へアクセスができることが必要です。 Windows Server 2003 、および、Windows 2003 R2 上のMSCS クラスター環境の場合、MSDTC へのアクセスはクラスター化されたMSDTC ではないとアクセスできないため、クラスター化が必須です。

    フェールオーバー クラスタが設定された SQL Server で MSDTC を再構築または移動する方法 http://support.microsoft.com/kb/294209/ja

    Windows Server 2003 /2003 R2 では 分散トランザクションを使用されない環境においてもクラスター化が必要でした。 そのため、後続の Windows  Server 2008 の MSFC クラスター環境では、MS DTC をクラスターリソースとして作成してアクセスすることも、 ローカルの MS DTC へアクセスすることも、どちらも可能であるように仕様変更されました。その結果、必ずしも MS DTC をクラスターリソースとして登録する必要はなくなりました。 また、Windows Server 2003 の MSCS クラスターでは 1 つのクラスターに 1 つの MSDTC リソースしか作成できませんでしたが、Windows Server 2008 の MSFC クラスターから MSDTC リソースの作成ルールが拡張されており、クラスター グループ毎に MSDTC リソースを作成することができるようになっています。 その結果、MSDTC を利用するクラスター リソースが複数のクラスター グループに存在する場合、必要とされるクラスター グループ毎に MSDTC リソースを作成することが MSFC クラスター環境にて可用性を高めて動作できることが可能となり、サポートではこちらの構成を推奨しております。


    MSDTC のクラスター化した場合としない場合での動作の違い

     

    MSDTC のクラスター化が必須でない場合は、「分散トランザクションを使用する場合」となります。 上記で分散トランザクションについて少し説明いたしましたが、ここでは、MSDTC のクラスター化を行う場合と行わない場合で何が異なるのか見ていきます。

    クラスター化されている MS DTC と、クラスター化されていない(ローカルの) MS DTC では、分散トランザクション実行中に SQL Server がフェールオーバーした場合では、以下の差が発生します。  


    <クラスター化された MS DTC の場合>
    トランザクションの Rollback    

    <クラスター化されていない MS DTC の場合>
    トランザクションの Abort     

    トランザクションが完了しないという点では同じですが、トランザクションの Abort に失敗した場合、ローカル MS DTC には完了しないトランザクションが存在する(インダウト状態)になります。完了していないトランザクションは、SQL Server がフェールバックしたとしてもそのトランザクションに紐付けられていたセッションが存在しない状態となるため、トランザクションを完了(Commit、もしくは、Rollback)することができません。
    この場合、手動でコンポーネントサービスのローカル DTC 上に表示されるインダウト状態のトランザクションを「破棄」等の操作を行う必要があります。
    どのトランザクションがAbort に失敗するかを予測することはできないため、ローカル MS DTCを使用して上記現象が発生した場合は、ご自身にて対応いただく必要があります。
    MS DTC をクラスターリソース化することにより、トランザクションが適切に処理され、インダウト状態のトランザクションを抑制することが予測されますため、分散トランザクションを実行する場合、もしくは分散トランザクションを実行する予定がある場合は、MS DTC をクラスターリソースとして登録することを推奨しております。


    分散トランザクションを使用するためのMSDTC の設定

    Windows Server 2008 以降では、MSDTC をクラスターリソースとして登録しなくても、分散トランザクションは実行可能です。 ただし、クラスター化しても、しない場合においても、MSDTC のセキュリティオプションを有効にする必要があります。 設定手順は以下の通りです。

    ※Windows Server 2012 の場合

    1.「管理ツール」-「コンポーネントサービス」-「コンピュータ」- 「マイコンピュータ-」ー「Distribution Transaction Coordinator」 ー「ローカルDTC」もしくは「クラスター化されたMSDTC」を右クリックし、「プロパティ」メニューを選択。

    2.以下と同じようにチェックされていることを確認します。

    image

     

    3. MS DTC の Windows ファイアウォールの例外設定
    MS DTC の Windows ファイアウォールの例外設定を行います。

    クラスター環境の場合はすべてのノードにて行います。

    Enable Firewall Exceptions for MS DTC    
     
    http://technet.microsoft.com/ja-jp/library/cc725913(v=ws.10).aspx

     

    4. MSDTC を再起動します。
    クラスター環境の場合は、MS DTC クラスターリソースを含むクラスターグループを各クラスターノードへ移動します。     

    MSDTC のクラスター化につきましては以下をご参照ください。

    Windows Server 2012 フェールオーバー クラスタリング構築・運用・管理ガイドdownload.microsoft.com/download/9/.../WS2012_WSFC_Guide.docx‎


    2013 年 12 月 SQL Server 最新モジュール

    $
    0
    0

    2013 年 12 月 18 日時点の SQL Server 最新モジュールです。

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2012

    SP1

    KB 2894115(CU7)

    11.0.3393

    2013/11

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

    SQL Server 2008 R2

    SP2

    KB 2908087 (CU10)

    10.50.4297

    2013/12

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

    SQL Server 2008

    SP3

    KB 2893410 (CU14)

    10.00.5848

    2013/11

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

    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 の更新プログラムを参照して下さい。

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

    照合順序 - 文字の比較と並び順 (その 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


       


     

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

    $
    0
    0

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

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2012

    SP1

    KB 2917531(CU8)

    11.0.3401

    2014/1

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

    SQL Server 2008 R2

    SP2

    KB 2908087 (CU10)

    10.50.4297

    2013/12

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

    SQL Server 2008

    SP3

    KB 2923520 (CU15)

    10.00.5850

    2014/1

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

    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 の更新プログラムを参照して下さい。

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

    統計情報更新処理をキャンセルした場合の動作

    $
    0
    0

    神谷 雅紀
    Escalation Engineer


    インデックスの再構築や再構成を実行中にキャンセル (中断) した場合については、インデックス再構築と再構成の違いで触れていますが、統計情報を更新している最中に処理をキャンセルした場合はどうなるのかといった質問がありましたので、今回は、統計情報の更新処理をキャンセルした場合の動作について説明します。

    ※ 以下の動作は SQL Server 2012 のものです。基本的には他のバージョンでも同じであると思われますが、明示的な確認は行っていません。


    統計情報更新をキャンセルした場合の動作

    統計情報の更新は、各統計情報ごとにひとつのトランザクションとして実行されます。ある統計情報を更新している最中にキャンセル (中断) した場合には、その統計情報を更新しているトランザクションも中断され、ロールバックされます。結果として、統計情報は更新前の状態に戻ります。

    この動作は、拡張イベントの transactions.sql_transaction や SQL Trace の SQL Transaction イベントで確認することができます。

    image


    UPDATE STATISTICS ステートメントの場合

    UPDATE STATISTICS は、個々の統計情報を指定して実行することも、テーブルを指定して実行することもできます。テーブルを指定して実行した場合には、そのテーブルに属するすべての統計情報が更新されます。

    テーブル名のみを指定した UPDATE STATISTICS の実行をキャンセルした場合のキャンセル後の状態は、キャンセルよりも前に更新が完了している統計情報については更新後の状態、キャンセル時点で更新中であった統計情報、および、まだ更新が開始されていなかった統計情報は、更新前の状態になります。

    テーブル名のみではなく統計名またはインデックス名も指定して実行した場合には、UPDATE STATISTICS をキャンセルすると、統計情報は更新前の状態に戻ります。

    ただし、キャンセルが、統計情報更新トランザクションは完了しているものの、UPDATE STATISTICS ステートメントはまだ完了していないタイミングになることもありえます。その場合は、UPDATE STATISTICS をキャンセルしても統計情報は更新された状態になります。


    image


    統計情報の自動更新の場合

    自動更新の場合も UPDATE STATISTICS の場合と同様に、統計情報更新トランザクションが実行されている最中にキャンセルした場合には、トランザクションはロールバックされ、更新前の状態に戻ります。

    自動更新の場合は、明示的に UPDATE STATISTICS を実行する場合とは異なり、統計情報を参照するステートメントの実行時に更新されることから、統計情報更新のキャンセルは、同期更新であれば、それを起動したステートメントのキャンセル時に発生することになります。非同期更新の場合は、統計情報更新タスクがキューにポストされるのみで、実際の更新はバックグラウンドタスクによって実行されます。バックグラウンドタスクは、何らかのエラーや SQL Server のシャットダウンなどにより中断を余儀なくされた場合を除いて、処理をキャンセルしません。

    統計情報が更新されるのは、ステートメントの最適化フェーズです。最適化が終了し、実行フェーズに入った後にステートメントがキャンセルされても、統計情報は更新後の状態になります。

    更新対象となる統計情報は、ステートメントが最適化されている最中に参照される統計情報のうち、自動更新の閾値を超えているもののみです。

    ※ 統計情報は、これから参照するデータがどの程度あるのかを推測するために使用されるものです。そのため、統計情報の更新のきっかけとなるのは、データを更新する時ではなく、データを参照する時です。行の追加では統計情報の自動更新は行われません。更新や削除でも、更新や削除の対象となる行を選ぶためには統計情報は必要になりますが、実際にデータを書き換えるためには必要になりません。


    image

     

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

    $
    0
    0

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

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2012

    SP1

    KB 2917531(CU8)

    11.0.3401

    2014/1

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

    SQL Server 2008 R2

    SP2

    KB 2926028 (CU11)

    10.50.4302

    2014/2

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

    SQL Server 2008

    SP3

    KB 2923520 (CU15)

    10.00.5850

    2014/1

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

    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 Database] SQL Server - Windows Azure SQL Database (WASD) 間のデータ同期方法について

    $
    0
    0



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

    今回は、Windows Azure SQL Database (以下 WASD) に関するお問い合わせの中で、よくあるお問い合わせの一つを紹介します。



    [質問]

    オンプレミス上の SQL Server と WASD 間のデータの同期を実施したいが、同期する方法について知りたい。



    [回答]

    オンプレミス上の SQL Server と WASD 間のデータの同期(差分同期) を自動的に行える機能は、2014年2月 時点にてございません。

    しかしながら、毎回 全データの同期となりますが、代替案として、以下のツールを使用することにより、データの同期を行うことができます。

    A) SqlPackage.exe

    メリットリトライロジックが実装されているため、何らかの要因により Export/Import 処理が失敗したとしても、失敗した処理から再処理を行うことが可能となります。

    B) SQL Azure へのデータベースの配置 (SQL Server Management Studio 以下 SSMS)

    メリットSSMS から 簡単に処理を実行することが可能となります。

    C) BCP ユーティリティ

    メリットインポートの範囲を指定することが可能であるため、データ量(行数) の多いテーブルを WASD 上にインポートする場合、1回の処理で実行される処理量を制限させることが可能となります。

    +補足+

    Windows Azure 仮想マシン (IaaS) 上に SQL Server をインストールすることにより、既存の SQL Server と同じ機能(AlwaysOn 可用性グループ、データベース ミラーリング、ログ配布、バックアップ/リストア ) を使用し、ディザスタ リカバリ 環境を構築することが可能になります。

    Windows Azure の仮想マシン内の SQL Server の高可用性と災害復旧
    http://msdn.microsoft.com/ja-jp/library/jj870962.aspx

    それでは A) から C) の各々の使用方法例 (今回は、オンプレミス環境からWASD環境への同期) を、簡単に紹介します。



    A) SqlPackage.exe

    [事前準備]

    1)以下の URL から SSMS 2012 Express のセットアッププログラムをダウンロードし、オンプレミス上のクライアントにインストールします。

    Microsoft SQL Server 2012 Service Pack 1 (SP1) Express
    http://www.microsoft.com/ja-jp/download/details.aspx?id=35579
    + SQLManagementStudio_x64_JPN.exe
    + SQLManagementStudio_x86_JPN.exe

    ※ SqlPackage.exe は、SQL Server 2012 製品版はもちろん、SSMS 2012 Express にも含まれているツールとなります。

    [実行手順]

    1)コマンド プロンプトを起動します。

    2)SqlPackage.exe が配置されているパスに移動します。(x64 環境の場合、既定の配置パス : C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\)

    3)SqlPackage.exe で “Export” オプションを指定し、オンプレミス上のデータを同期したいデータベースのバックアップ (bacpac 形式) を採取します。

    + コマンド例

    sqlpackage.exe /Action:Export /ssn:"<SQL Server インスタンス名>" /sdn:"<SQL Server データベース名>" /su:"<ログイン名>" /sp:"<パスワード>" /tf:"<出力ファイル名.bacpac>"

    image

    4) 同期を行う WASD 上のデータベースを削除します。

    5)SqlPackage.exe で “Import” オプションを指定し、3) で作成したデータベースのバックアップ (bacpac 形式) を WASD 上にインポートします。

    + コマンド例

    sqlpackage.exe /Action:Import /tsn:"<WASD サーバー名>" /tdn:"<WASD データベース名>" /tu:"<ユーザー名>" /tp:"<パスワード>" /sf:"<インポートファイル名.bacpac>"

    image

    +補足+

    オンプレミス上の SQL Server のデータベースで、WASD と互換性のない機能 (例: 拡張プロパティなど) が使用されている場合は、エクスポート/インポート処理が失敗します。

    オンプレミス上の SQL Server のデータベースで、WASD と互換性のない機能を無効にできない場合は、WASD 上にオブジェクトを作成したうえで、C) BCP ユーティリティ などの他のツールを使用することを検討ください。

    なお、WASD からオンプレミス上の SQL Server への同期の場合は、互換性の問題は発生しません。



    B) SQL Azure へのデータベースの配置

    [事前準備]

    1)SSMS 2012 (Express) を オンプレミス上のクライアントにインストール します。

    [実行手順]

    1)SQL Server 2012 Management Studio (Express) を起動します。

    2)データベース - 同期対象のデータベース - 右クリック – タスク – SQL Azure へのデータベースの配置 を選択します。

    3)WASD サーバーに接続し、”新しいデータベース名”、WASD の エディション/データベースサイズ、及び bacpac の一時保存先パスを指定後、”次へ” を選択します。

    image

    4)指定した内容が正しいことを確認後、”完了” ボタンを選択します。

    image



    C) BCP ユーティリティ

    [事前準備]

    1)WASD 上に、新規データベース 及び オンプレミス上の SQL Server のデータベースと同じオブジェクト (テーブルなど) を作成します。

    2)SSMS 2012 (Express) を オンプレミス上のクライアントにインストール します。

    [実行手順]

    1)WASD 上の 同期対象となるデータベースのテーブルを TRUNCATE TABLE コマンドなどで削除します。

    2)以下の URL を参照し、BCP ユーティリティを使用した オンプレミス上の SQL Server データベース からの エクスポート 及び エクスポートしたデータを WASD 上に インポートします。

    bcp を使用して Windows Azure SQL データベースにデータベースを移行する方法
    http://msdn.microsoft.com/ja-jp/library/windowsazure/jj156153.aspx

    +補足+

    一つのテーブルのサイズ (行数) が大きい場合、WASD へのインポート処理時間が長く、処理量が多くなることに起因し、スロットリングなどの問題が発生し、インポート処理が失敗する可能性があります。

    一つのテーブルのサイズ (行数) が大きい場合には、”-F (最初の行)” 及び “-L (最後の行)” オプションで、インポートする行数を指定した上で、データをインポートすることを推奨しています。

    以下のコマンド例の場合、BCP ユーティリティでエクスポートしたファイルの 100000 行目から 199999 行目までのみをインポートすることが可能です。

    + コマンド例

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 100000–L 199999–h”TABLOCK”

    bcp ユーティリティ
    http://msdn.microsoft.com/ja-jp/library/ms162802.aspx

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

    Windows Azure の仮想マシンで実行する SQL Server Reporting Services の構築手順

    $
    0
    0

    山崎 実久
    SQL Developer Support Engineer
     

    Windows Azure に格納されたレポート定義言語 (RDL) レポートの実行と表示を提供するサービスである SQL レポートは、2014年10月31日にサービスの提供が中止されます

    SQL レポートを今までお使いのお客様は、Windows Azure の仮想マシン上で動作する SQL Server Reporting Services にレポートの移行をお願いいたします。
    Windows Azure の仮想マシンの作成手順や、仮想マシン上での SQL Server Reporting Services (SSRS) の構築手順を下記構成でお伝えいたします。

    ---------------------------------------
    (A). Windows Azure の仮想マシンの作成
    (B). 仮想マシン上での SQL Server Reporting Services の構築
    (C). 仮想マシンへのエンドポイントの追加
    (D). 仮想マシンのファイアウォールのポートの解放
    (E). Report Server のサイトへのアクセス可否の確認
    ---------------------------------------

    (A). Windows Azure の仮想マシンの作成

    ポータルサイトから仮想マシンを選択し、仮想マシンの作成を行います。

    (1). 仮想マシンを選択し、[新規] を選択します。

    clip_image001

    (2). [コンピューティング]-[仮想マシン]-[ギャラリーから] を選択します。

    clip_image002

    (3). ご要望の SQL Server のバージョンと OS を含むイメージを選択します。

    clip_image003

    (4). 仮想マシンの構成を行うために、仮想マシン名、サイズ、ユーザー名、パスワードを入力します。

    clip_image004

    (5). 設定の内容を確認し、必要があれば変更いただき、次に進みます。

    image

    (6). ご要望のポートを設定いただくか、既定の設定で問題ない場合は、次に進み、仮想マシンの構築を実行します。

    clip_image006

    (7). 構築が完了した仮想マシンへの接続

    Remote Desktop を利用して接続します。
    以下のように、マシン名やユーザーを設定いただき、接続します。

    machine:   xxx.cloudapp.net:(port 番号)
    user: xxx\User名
    password: パスワード

    clip_image007

    clip_image008

     

    (B). 仮想マシン上での SQL Server Reporting Services の構築

    仮想マシンへの接続した後、以下の手順を参考に、SQL Server Reporting Services の設定を行い、レポート参照可能な状態にします。
    ご利用いただく OS によって、手順が一部変わります。ご利用の OS に合わせて手順を適宜変更してください。

    (1).  [スタート]-[Microsoft SQL Server 2012] - [Configuration Tools] - [Reporting Services Configuration Manager] を選択します。

    image

    (2). SQL Server 2012 Reporting Services のインスタンスに接続します。

    image

    (3). [Database] - [Change Database] を選択し、Reporting Services で利用するデータベースを作成します。

    image

    (4). [Create a new report server database] を選択します。

    image

    (5). 各種設定を確認しウィザードに沿って進みます。

    お客様の環境に合わせて設定は適宜変更ください。

    image

    image

    image

    image

    image

    image

    (6). [Web Server URL] の項目を選択し、Report Server へ接続するための URL を構成します。

    image

    (7). [Report Manager URL] の項目を選択し、Report Manager へ接続するための URL を構成します。

    image

     

     

    (C). 仮想マシンへのエンドポイントの追加

    構成した Reporting Services のサイトへアクセスするために、エンドポイントの追加を行います。

    (1). ポータルサイトから作成した仮想マシンを選択し、エンドポイントのメニューを選択します。

    image

    (2). ウィザードに従い、設定を進めます。

    image

    image

     

     

    (D). 仮想マシンのファイアウォールでのポートの解放

    (1). 仮想マシンに接続し、ファイアウォールの設定で、エンドポイントで追加したポートを開けます。

    image

    imageimage

    imageimage

    image

     

    (E). Report Server へのサイトアクセス可否の確認

    (1). [スタート]-[Microsoft SQL Server 2012] - [Configuration Tools] - [Reporting Services Configuration Manager] を選択します。

    image

    (2). SQL Server 2012 Reporting Services のインスタンスに接続します。

    image

    (3). Report Manager  URL を選択いただき、URL をクリックします。

    image

    (4). 認証画面にユーザー名とパスワードを入力し [OK] を選択します。

    image

    (5). 表示された Report Manager のサイトに、お客様が SQL レポートで利用されていたレポートを配置いただき、レポートを参照することができるか確認します。

    image


    以上、お伝えいたします。ご参考になれば、幸いでございます。


    [SSRS] Report Viewer コントロール 2010 Language Pack Service Pack 1 が修復インストールとなる

    $
    0
    0

    SQL Server Reporting Services のレポートや Visual Studio で作成できるレポートを、Visual Studio で作成した Web アプリケーションや Windows フォームアプリケーションを介して参照するためのコントロールを Report Viewer コントロールといいます。

    このコントロールは、Reporting Services などのインストールに伴ってインストールされますが、このコントロールのみを、Report Viewer 再頒布可能パッケージからインストールすることができます。

    また、このコントロールが発するエラーメッセージ等を日本語化するために、Report Viewer コントロールの日本語 Language Pack というパッケージも存在します。

    ここでご案内するのは、Microsoft Report Viewer 2010 日本語 Language Pack がインストールされている環境にて、Microsoft Report Viewer 2010 日本語 Language Pack の Service Pack 1 をインストールした際に、修復モードでセットアップされるという現象です。

    要因
    Microsoft Report Viewer 2010 日本語 Language Pack と Microsoft Report Viewer 2010 日本語 Language Pack Service Pack 1 ではその内容に差異がありません。
    このため内部で同一のモジュールと判断され、修復セットアップとなります。

    対処方法
    ・Microsoft Report Viewer 2010 日本語 Language Pack Service Pack 1 をインストールしない。
    内容が同じであるため、Microsoft Report Viewer 2010 日本語 Language Pack でも、 Microsoft Report Viewer 2010 日本語 Language Pack Service Pack 1 でもどちらを使用しても動作に差異はありません。

    Microsoft Report Viewer 2010(Language Pack ではない本体)に Service Pack 1 が適用されていても、Microsoft Report Viewer 2010 日本語 Language Pack で正常に動作致します。

    ・Microsoft Report Viewer 2010 日本語 Language Pack を一度アンインストールして、Microsoft Report Viewer 2010 日本語 Language Pack Service Pack 1 をインストールして使用する。
    バージョン番号の表示が変わるだけで、中身の差異はないため正常に動作します。

     

    [SSAS] 信頼関係のない異なるドメインに存在する名前付きインスタンスの Analysis Services へ接続する際の制限

    $
    0
    0

    SQL Developer Support Engineer 山崎実久

    事象

    信頼関係のない異なるドメインに名前付きインスタンスでインストールされた Analysis Services へ、ユーザ名とパスワードを指定しパススルー認証で接続すると、以下のエラーが出力され接続できない。

    OLE DBプロバイダーでエラーが発生しました。リダイレクターに接続できませんでした。’SSASのサーバー名’サーバーでSQL Browserサービスが実行されていることを確認してください。

    具体的な例

    - 環境
    ドメインA の Windows 7 には、Office 2010 の Excel が存在する。
    ドメインB の Windows Server 2012 上に名前付きインスタンス tabular でインストールされた SQL Server 2012 Analysis Services 表形式モード が存在する。
    ドメインA とドメイン B には信頼関係がない。

    ドメインサーバーの構成役割存在するユーザー名とパス��ード
    ドメイン A- Windows 7
    - Excel 2010
    クライアントドメインA\User1 - pw1
    ドメイン B- Windows Server 2012
    - 名前付きインスタンス tabular でインストールされた SQL Server 2012 Analysis Services 表形式モード
    サーバードメインB\User2  - pw2
    サーバー名\User2 - pw2  ※ドメインユーザー User2 とパスワードが同じローカルユーザー

    - 上記環境配下におけるAnalysis Services への接続時の動作
    ドメインA のクライアントに ドメインA\User1 でログインし、Excel を開き、名前付きインスタンスの Analysis Services (表形式モード) へ接続する。Excel のデータ接続ウィザードで ”以下のユーザー名とパスワードを使用する” の項目で ドメインB\User2 で接続する。パススルー認証を利用し接続できると期待したが、以下のエラーが発生し接続できない。

    エラー
    ----------
    「OLE DBプロバイダーでエラーが発生しました。リダイレクターに接続できませんでした。’SSASのサーバー名’サーバーでSQL Browserサービスが実行されていることを確認してください。」
    ----------

    原因 

    信頼関係のない異なるドメインに名前付きインスタンスでインストールされた Analysis Services へ、ユーザ名とパスワードを指定しパススルー認証で接続することはサポートされていないためです。

    対処方法

    本シナリオにおいての対処方法は 2 通りあります。

    1. ドメイン間の信頼関係を結ぶ。

    2. http 接続で接続する。

    - http 接続の参考情報 
    インターネット インフォメーション サービス (IIS) 7.0 上の Analysis Services への HTTP アクセスの構成

    留意事項

    クライアント - サーバー間が異なるドメインである場合や、非ドメイン環境配下において、Analysis Services への ユーザー名 / パスワード 指定での接続は保障しておりません。

    その他、クライアント - サーバーが同一ドメイン環境配下に存在しない場合、Analysis Services への接続は、HTTP アクセスを構成することを推奨しています。

     

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

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

    $
    0
    0

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

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2012

    SP1

    KB 2931078(CU9)

    11.0.3412

    2014/3

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

    SQL Server 2008 R2

    SP2

    KB 2926028 (CU11)

    10.50.4302

    2014/2

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

    SQL Server 2008

    SP3

    KB 2936421 (CU16)

    10.00.5852

    2014/3

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

    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 の更新プログラムを参照して下さい。

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

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

    $
    0
    0

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

    SQL Server 2000 は 2013 年 4 月 9 日に延長サポートが終了しました。長らくのご愛用ありがとうございました。

     

    サービス
    パック

    更新プログラム

    バージョン

    リリース年月

    SQL Server 2014

    RTM

    KB 2931693(CU1)

    12.0.2342

    2014/4

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

    SQL Server 2012

    SP1

    KB 2931078(CU9)

    11.0.3412

    2014/3

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

    SQL Server 2008 R2

    SP2

    KB 2938478 (CU12)

    10.50.4305

    2014/4

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

    SQL Server 2008

    SP3

    KB 2936421 (CU16)

    10.00.5852

    2014/3

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

    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 の更新プログラムを参照して下さい。

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

    データベースのエクスポート処理(自動エクスポート処理)の遅延現象について

    $
    0
    0

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

    今回は、Windows Azure SQL Database (以下 WASD) の機能の一つである、データベースのエクスポート処理で発生しうる現象について説明します。


    [現象]

    Windows Azure 管理ポータル上から、SQL Database に対する エクスポート処理 (自動エクスポート処理) の完了までに数時間以上の時間を要する可能性がある。


    [説明]

    Windows Azure 管理ポータル上から、SQL Database に対するエクスポート処理 (自動エクスポート処理) が実行された際、エクスポート処理のリクエスト要求がエクスポート処理を実施するサーバー上に蓄積されます。

    その後、蓄積されたエクスポート処理のリクエストを順次処理するという動作が行われています。

    そのため、一時的に エクスポート処理の要求リクエスト数が多くなるなどの要因により、実際にエクスポート処理が実施されるまでに時間を要するという現象が発生する可能性があります。 (最大遅延時間 : 12 時間)

    現在、可能な限り、エクスポート処理のリクエストの実行までに遅延が発生しないよう取り組んでおります。

    しかしながら、状況によりましては、SQL Database に対するエクスポート処理 (自動エクスポート処理) が遅延するという現象は、発生しうる現象となります。



    [参考情報]

    データベースをインポート/エクスポートする方法 (Windows Azure SQL Database)

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

     

    Viewing all 293 articles
    Browse latest View live


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