Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
SQLServer
Shallow and Wide
- 浅く広く -
第1回 関西DB勉強会
サヴロウ
自己紹介
・医療系のパッケージシステムを
作っています。
DBはSQLServerです。
主にSQLWorldに出没しています。
・オクマー(旧:フライパンズ)のベース&アレンジ
・ライブ予定
9/16(水) 梅田クラブクアトロ
9/27(日)...
SQLServerとは
Microsoft製のちゃんとした有償データベースです。
-> Accessの上位版ではありません。
[よくあるイメージ]
-> メンテナンス不要のオートマチックデータベース
-> タダで使えるのがあるらしい
-> 行ロ...
エディション/ライセンスとバージョン①
[バージョン]
-> だいたい2年に一回バージョンアップします。
-> 現行はSQLServer2014でSQLServer2016が来年出るこ
とはアナウンス済み。
-> 大雑把ですが、Enterpri...
エディション/ライセンスとバージョン②
[エディション]
-> Express
-> Standard
-> Business
Intelligence
-> Enterprise
-> Web
-> Developer
Edition
-> ...
エディション/ライセンスとバージョン③
[SQLServerのエディションと詳細]
-> 公式
http://www.microsoft.com/ja-jp/server-
cloud/products/sql-server-editions/...
エディション/ライセンスとバージョン④
[ライセンス]
-> サーバライセンス
(サーバライセンス+クライアントライセンス)
-> コアライセンス
(コアライセンスのみでクライアントライセンス購入不要)
[ライセンス詳細]
http://www...
SQL Server Express Edition①
[機能制限/特徴]
-> 1ソケット(4コアまで)
-> インスタンスごとの制限
・メモリ 1GB
・データベースのサイズ 10GB(100万ページは入る)
※サイズはデータベースごとなの...
SQL Server Express Edition②
[インストーラの種類]
-> Express
GUI管理ツールなどを含まず、データベース・エンジンと最低限の
ツールのみで構成されたエディション
-> Express with Tools...
SQL Server Express Edition③
[ライセンス]
-> 商用利用可能
-> CALは必要か
=> CALは不要だが、そもそもWindowsCALが必要。
http://salaryman-life.blogspot.jp/...
その他のライセンス
[SQLServerでパッケージソフト開発]
-> ISV契約(勘定系のソフトに多いです)
-> SQLServerを製品に組み込むことで安価にライセンスを販売
することができる
-> ServerCAL,ClientCAL...
インストーラ
[インストーラ]
-> インストールで落ちることがほとんどないので快適です
インストール設定①新規インストールorインスタンス追加
インスタンス
[インスタンスとは]
-> SQLServerの実行単位。同一マシン内に複数のインスタンス
をインストール可能
-> SQL Server構成マネージャー
から確認できる
[別インスタンス同士の異なるデータベースの結合]
-> リ...
インストール設定②ライセンス条項
インストール設定③機能の選択 -> 全部指定
インストール設定④インスタンス名指定
インストール設定⑤サービスアカウントと照合順序
インストール設定⑥サービスアカウントと照合順序
照合順序①
[照合順序とは?]
-> 特定の言語とロケールの基準に基づいて、文字データの文字
列の並べ替え方法および比較方法に関する規則を指定します。
[ざっくり]
-> バイナリ比較の場合は、Japanese_XJIS_BIN2で
=> BI...
照合順序②
[照合順序]
https://msdn.microsoft.com/ja-jp/library/ms143726(v=SQL.120).aspx
http://blogs.msdn.com/b/jpsql/archive/2013/...
照合順序の設定画面
インストール設定⑦データベースエンジンの構成
Windows認証と混合認証
[Windows認証モード]
-> Windowsのユーザーでのログイン。デフォルトこちら。
[混合モード(SQL Server認証とWindows認証)]
-> sa(Adminユーザー)のパスワードを設定する。...
インストール設定⑧データベースエンジンの構成
Filestream
[Filestreamとは]
-> varbinary(MAX)のデータをデータベース内ではなく、ファ
イルシステム上のファイルとして保存する機能。
-> Expressの容量としてカウントされません。
[FileTabl...
インストール設定⑨Reporting Servicesの構成
インストール設定⑩インストール開始
インストール設定⑪インストール終了
インストーラ補足
[Expressの動きが若干違うみたい]
-> 製品版のインストール時にはインストール直前に
「この構成でインストールします」という画面がでてきて
その下に[ConfigurationFile.ini]のパスが記載される
この...
サイレントインストール
-> 下記コマンドで
setup.exe /ConfigurationFile=ConfigurationFile.ini /qs
-> Expressの場合は
SQLEXPRADV_x86_JPN.exe
/Confi...
異なるバージョンの混在と互換性バージョン①
[異なるバージョンのインストール]
-> 可能。(例)SQLServer2008と2014を同一マシンにインス
トール可能。
https://msdn.microsoft.com/ja-jp/libr...
異なるバージョンの混在と互換性バージョン②
[バージョンと互換性バージョン対応表]
-> SQLServer2016が出ると、互換性バージョン100がサ
ポートされない恐れがある。SQLServer2008/R2は結構数
が出てる(期間も4年や...
SQL Server Management Studio(SSMS)
[管理、設定、監視、SQLすべてここで]
-> Expressも含め標準で搭載
SSMS – 基本1
[オブジェクトエクスプローラー]
-> 階層構造で閲覧可能
-> それっぽいところで右クリックすると
なんでもできる
↓下記はデータベースをスクリプト化しているところ
SSMS – 基本2
[スクリプト生成が楽]
-> 何か設定を追加するときに左上に[スクリプト]ボタンがある。
・・・OKを押す前にスクリプトを作成しましょう
↓下記はインデックスをGUIで追加しようとしているところ
SSMS – 基本3
[便利な機能たち]
-> 動的管理ビューも一覧で
-> コードスニペットマネージャー
SSMS – 基本4
[利用状況モニタ]
-> インスタンスのrootで右クリック
SSMS – クエリを書く1
[USEとGO]
-> TransactSQLといってMicrosoftがSQLを拡張して作ったコ
マンドです。とりあえず下記だけ覚える。
use [データベース名] ・・・データベースを変更
go ・・・ステート...
SSMS – クエリを書く2
[インテリセンス]
-> テーブル名等、オブジェクトの頭を入力すれば候補が出る
-> もう一回出すには[Ctrl]+[Space]
-> 邪魔な場合は[Ctrl]を押していると下が透ける
SSMS – クエリを書く3
[出力形式]
-> テキスト形式
-> 表形式
-> ファイルに出力
↓下記か、設定で切り替え
SSMS – クエリを書く4
[実行プランを表示]
-> Ctrl + M
SSMS – クエリを書く5
[トランザクションの注意点1]
-> SSMSでのトランザクションは自動コミットがデフォルトで
す。
↓下記のようにやればOK
--begin tranを入れる
begin tran
delete from Sal...
SMSS – クエリを書く6
-> Oracleみたいにする場合は下記
Set implicit_transactions on
[その他]
-> Dual表はないので、fromなし構文を使用
select ISNUMERIC('a')
-> ...
SQL
[使用できるSQL構文]
-> 一般的なANSI準拠SQLはすべて対応
-> 集計関数はちょっとクセありRANK()他
-> 再帰クエリ(CTE)の記述も可
-> XMLにも対応しているのでXQueryの記述も可
-> PIVOT他の集...
データベースの作成1
[復旧モデル]
-> 完全 トランザクションログの内容をすべて保持し
復旧時には任意の時点に普及することが可能
トランザクションログのバックアップ管理が必要
-> 一括ログ ログ記録するが最小限の一括ログしか記録しない
-...
データベースの作成2
[注意点]
-> 自動終了 Falseで! (ExpressでTrueになるケースあり)
-> 統計の自動更新 Trueで!
[基本ファイル構成]
-> データファイル(.mdf)
-> ログファイル(.ldf)
の2つ
データベースの作成3
[ファイル拡張]
-> データファイル(.mdf)の自動拡張設定。以前は%での拡張
だったので、*MB単位に変更する。DBが大きくなればなるほ
どファイル拡張のコストが大変なことになる
[ページの概念]
-> SQLSer...
システムデータベース
[SQLServerの起動に必要なデータベースの主な役割]
-> master 保持しているデータベース情報
ログイン情報
-> msdb SQLServerエージェントのジョブ情報、
スケジュールの設定情報、
バックアッ...
クラスタ化インデックス1
[クラスタ化インデックスとは]
-> PrimaryKey順に物理的にソートして保存するテーブル構造。
データがInsertされると、そのデータはテーブルの該当する
PrimaryKeyの場所(リーフページ)にデータを...
テーブル系のその他機能1
[テーブル系]
->ビュー、トリガー、ストアド、インデックス付きビュー(マ
テビュー)、シーケンス、一時テーブル、制約、BLOB
・・・一般的なものはそろってます
-> カラムストアインデックス(列ベースのデータストレ...
テーブル系のその他機能2
[インデックス系]
https://msdn.microsoft.com/ja-jp/library/ms175049(v=sql.120).aspx
-> 非クラスタ化インデックス
=> 普通のインデックスです。
-...
バックアップとリストア
-> x86とx64とのバックアップの行き来OK
->互換性バージョンに関係なく古いバージョンへのリストア不
可
=> SQLServer2012、互換性レベル110のバックアップを
SQLServer2014にリストア...
便利なツール①
[SQL Server Profiler]
-> DBに投げられたSQLを監視・保存できる
=> デフォルトインストールでは入らないので、
「管理ツール(完全)」をインストールする
=> ExpressEditionにはありませ...
便利なツール②
[SQLCMD]
-> SSMSが使えない、ログインできなくなった時用の
コマンドプロンプト形式のツール
[SQL整形ツール]
-> PoorMansT-SQLFormaterSSMSAddins
=> 下記にインストールされる...
CPUとメモリ割り当て
-> CPUの割り当てができます。
-> メモリの割り当てもできます。
=> SQLサーバーの特徴として
一度SQLServerがメモリを
割り当ててしまうと、インスタ
ンスを再起動しない限り、
つかんだまま離さないとい...
アプリケーションからの接続①
[接続用のAPI]
-> .NETの場合はSQLClientで
-> JavaならJDBC
-> ODBC経由で
-> FireDAC、その他・・・
[通信ポート]
-> TCP:1433
-> Expressの場...
SqlClientを使用した接続①
[接続文字列]
-> SqlConnectionStringBuilderで。各値をプロパティで設定
可能。
-> Connectionを張るのにコストがかかる。必ずPoolingを
Trueにする
-> コ...
SqlClientを使用した接続②
[パラメータクエリを書く]
-> SQLインジェクションの対応があるので必須
-> パラメータクエリを書かないとアドホッククエリとなり
SQLのコンパイルが都度発生し、クエリキャッシュが増大
-> SQLSe...
参考
基本はMSDNで検索
自習書 http://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2014/technology/self-learning.aspx
MSSQLSupp...
◆ご清聴ありがとうございました
Prochain SlideShare
Chargement dans…5
×

Sql server浅く広く

4 199 vues

Publié le

SQL Servr Shallow and Wide
- 浅く広く -
第1回 関西DB勉強会

2015/09/05

Publié dans : Technologie
  • Dating direct: ❤❤❤ http://bit.ly/2F4cEJi ❤❤❤
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Sql server浅く広く

  1. 1. SQLServer Shallow and Wide - 浅く広く - 第1回 関西DB勉強会 サヴロウ
  2. 2. 自己紹介 ・医療系のパッケージシステムを 作っています。 DBはSQLServerです。 主にSQLWorldに出没しています。 ・オクマー(旧:フライパンズ)のベース&アレンジ ・ライブ予定 9/16(水) 梅田クラブクアトロ 9/27(日) 高槻アクトアモーレ(無料) 10/25(日) 武庫之荘ライブスポットアロー http://www.okumar.com ◆サヴロウ
  3. 3. SQLServerとは Microsoft製のちゃんとした有償データベースです。 -> Accessの上位版ではありません。 [よくあるイメージ] -> メンテナンス不要のオートマチックデータベース -> タダで使えるのがあるらしい -> 行ロックできない -> Oracleと比べて・・・ ※検索すると上記のようなものがヒットする場合が多い・・・
  4. 4. エディション/ライセンスとバージョン① [バージョン] -> だいたい2年に一回バージョンアップします。 -> 現行はSQLServer2014でSQLServer2016が来年出るこ とはアナウンス済み。 -> 大雑把ですが、Enterpriseの機能を使わないのであれば SQLServer2008でも十分かと [プラットフォーム] -> Windowsのみ [注意]ライセンスに関してはこの資料は参考程度にして、 正しくはMicrosoftに問い合わせてください。
  5. 5. エディション/ライセンスとバージョン② [エディション] -> Express -> Standard -> Business Intelligence -> Enterprise -> Web -> Developer Edition -> Evaluation タダ!後で説明 可用性、ReportServices、管理ツール他 一通り全部 Standard+BIツール(PowerBIツール) インメモリ分析 高可用性、インメモリテーブル、BIツール、 透過的データ暗号化、カラムストアインデックス他全部 Webホスティング企業、Web VAP向け 開発者用(タダ) 試用版(タダ)
  6. 6. エディション/ライセンスとバージョン③ [SQLServerのエディションと詳細] -> 公式 http://www.microsoft.com/ja-jp/server- cloud/products/sql-server-editions/overview.aspx -> MSDN https://msdn.microsoft.com/ja- jp/library/Cc645993(v=SQL.120).aspx [SQLDatabase] -> SaaS型のクラウドサービス -> 可用性が元々構成されてる -> DBサイズ、速度、サポートにより価格が違う -> ≒SQLServer(になりつつある)
  7. 7. エディション/ライセンスとバージョン④ [ライセンス] -> サーバライセンス (サーバライセンス+クライアントライセンス) -> コアライセンス (コアライセンスのみでクライアントライセンス購入不要) [ライセンス詳細] http://www.microsoft.com/ja-jp/server- cloud/local/sqlserver/2012/howtobuy/default.aspx
  8. 8. SQL Server Express Edition① [機能制限/特徴] -> 1ソケット(4コアまで) -> インスタンスごとの制限 ・メモリ 1GB ・データベースのサイズ 10GB(100万ページは入る) ※サイズはデータベースごとなので、マスター、 トランザクションデータ、操作ログ、画像系などと DBを分ければかなり使える ※DBをまたいでの結合SQLは簡単にできます ※さらにFileStreamを使えば容量制限にかかりません -> x86,x64版あります
  9. 9. SQL Server Express Edition② [インストーラの種類] -> Express GUI管理ツールなどを含まず、データベース・エンジンと最低限の ツールのみで構成されたエディション -> Express with Tools Express単体にGUI管理ツール(SQL Server Management Studio Express)を加えたエディション -> Express with Advanced Services Express with Management Toolsにレポート機能や テキスト検索機能などを加えたエディション ==> タダなのでこれを入れるべし -> その他
  10. 10. SQL Server Express Edition③ [ライセンス] -> 商用利用可能 -> CALは必要か => CALは不要だが、そもそもWindowsCALが必要。 http://salaryman-life.blogspot.jp/2013/03/sql-server- expresssql-server-cal.html [ネットワーク接続] -> デフォルトではリモート接続を許可していない。ポートも動的 https://msdn.microsoft.com/ja- jp/library/ms345343(v=SQL.120).aspx
  11. 11. その他のライセンス [SQLServerでパッケージソフト開発] -> ISV契約(勘定系のソフトに多いです) -> SQLServerを製品に組み込むことで安価にライセンスを販売 することができる -> ServerCAL,ClientCALが必要
  12. 12. インストーラ [インストーラ] -> インストールで落ちることがほとんどないので快適です
  13. 13. インストール設定①新規インストールorインスタンス追加
  14. 14. インスタンス [インスタンスとは] -> SQLServerの実行単位。同一マシン内に複数のインスタンス をインストール可能 -> SQL Server構成マネージャー から確認できる [別インスタンス同士の異なるデータベースの結合] -> リンクサーバーを使用して結合する https://msdn.microsoft.com/ja-jp/library/ms188279.aspx
  15. 15. インストール設定②ライセンス条項
  16. 16. インストール設定③機能の選択 -> 全部指定
  17. 17. インストール設定④インスタンス名指定
  18. 18. インストール設定⑤サービスアカウントと照合順序
  19. 19. インストール設定⑥サービスアカウントと照合順序
  20. 20. 照合順序① [照合順序とは?] -> 特定の言語とロケールの基準に基づいて、文字データの文字 列の並べ替え方法および比較方法に関する規則を指定します。 [ざっくり] -> バイナリ比較の場合は、Japanese_XJIS_BIN2で => BINはSQLServer2000時代のもの。 => 並べ替えは文字コード順 -> 日本語照合順序はJapanese_XJIS_100_XX_CSで => XXはCI_ASが一般的(T=t,が≠か,あ=ア,ア=ア) => _CSはサロゲートペア文字のLENが正しくなる => _CSは2012から追加された
  21. 21. 照合順序② [照合順序] https://msdn.microsoft.com/ja-jp/library/ms143726(v=SQL.120).aspx http://blogs.msdn.com/b/jpsql/archive/2013/10/17/10455655.aspx [JIS2004] https://support.microsoft.com/ja-jp/kb/931785 [_CS] http://blog.engineer-memo.com/2012/05/25/
  22. 22. 照合順序の設定画面
  23. 23. インストール設定⑦データベースエンジンの構成
  24. 24. Windows認証と混合認証 [Windows認証モード] -> Windowsのユーザーでのログイン。デフォルトこちら。 [混合モード(SQL Server認証とWindows認証)] -> sa(Adminユーザー)のパスワードを設定する。 -> パスワードはWindowsのパスワードポリシーに依存。 -> Windows認証側のユーザーを残しっぱなしにしてしまう ことが多いので注意 -> 本番環境に自動インストールするときにパスワードポリシー で跳ねられることがよくある。
  25. 25. インストール設定⑧データベースエンジンの構成
  26. 26. Filestream [Filestreamとは] -> varbinary(MAX)のデータをデータベース内ではなく、ファ イルシステム上のファイルとして保存する機能。 -> Expressの容量としてカウントされません。 [FileTable] -> FileTableで管理されているフォルダをエクスプロー ラーで開いて、ドラッグ&ドロップするとSQL Server のテーブルに保存される機能。 該当のテーブルをSELECTすると、ファイル情報、バイ ナリも取得できる
  27. 27. インストール設定⑨Reporting Servicesの構成
  28. 28. インストール設定⑩インストール開始
  29. 29. インストール設定⑪インストール終了
  30. 30. インストーラ補足 [Expressの動きが若干違うみたい] -> 製品版のインストール時にはインストール直前に 「この構成でインストールします」という画面がでてきて その下に[ConfigurationFile.ini]のパスが記載される このファイルにインストール時の設定がすべて記載されてい る。=> C:¥Program Files¥Microsoft SQL Server¥120¥Setup Bootstrap¥Log¥YYYYMMDD_hhmmss¥ConfigurationFile.ini -> ConfigurationFile.iniを使用するとSQLServerのサイレント インストールが可能
  31. 31. サイレントインストール -> 下記コマンドで setup.exe /ConfigurationFile=ConfigurationFile.ini /qs -> Expressの場合は SQLEXPRADV_x86_JPN.exe /ConfigurationFile=C:¥ConfigurationFile.ini /qs https://msdn.microsoft.com/ja- jp/library/Dd239405(v=SQL.120).aspx
  32. 32. 異なるバージョンの混在と互換性バージョン① [異なるバージョンのインストール] -> 可能。(例)SQLServer2008と2014を同一マシンにインス トール可能。 https://msdn.microsoft.com/ja-jp/library/ms143694(v=SQL.120).aspx [互換性バージョン] -> 旧バージョンとの互換性を保つため、データベース単位で互 換性バージョンを設定可能 => SQLServer2014上でSQLServer2008上で作った データベースを互換性を保ったまま動作させることができる。 => 新しい互換性バージョンでは廃止する機能が多くあるので 新しいバージョンでどの互換性バージョンをサポートするか 理解しておく必要がある
  33. 33. 異なるバージョンの混在と互換性バージョン② [バージョンと互換性バージョン対応表] -> SQLServer2016が出ると、互換性バージョン100がサ ポートされない恐れがある。SQLServer2008/R2は結構数 が出てる(期間も4年やし) 互換性バージョン (SQLServerバージョン) 80 (2000) 90 (2005) 100 (2008/R2) 110 (2012) 120 (2014) SQLServer 2008/R2 ○ ○ ○ SQLServer 2012 ○ ○ ○ SQLServer 2014 ○ ○ ○
  34. 34. SQL Server Management Studio(SSMS) [管理、設定、監視、SQLすべてここで] -> Expressも含め標準で搭載
  35. 35. SSMS – 基本1 [オブジェクトエクスプローラー] -> 階層構造で閲覧可能 -> それっぽいところで右クリックすると なんでもできる ↓下記はデータベースをスクリプト化しているところ
  36. 36. SSMS – 基本2 [スクリプト生成が楽] -> 何か設定を追加するときに左上に[スクリプト]ボタンがある。 ・・・OKを押す前にスクリプトを作成しましょう ↓下記はインデックスをGUIで追加しようとしているところ
  37. 37. SSMS – 基本3 [便利な機能たち] -> 動的管理ビューも一覧で -> コードスニペットマネージャー
  38. 38. SSMS – 基本4 [利用状況モニタ] -> インスタンスのrootで右クリック
  39. 39. SSMS – クエリを書く1 [USEとGO] -> TransactSQLといってMicrosoftがSQLを拡張して作ったコ マンドです。とりあえず下記だけ覚える。 use [データベース名] ・・・データベースを変更 go ・・・ステートメントの終了 [実行] -> [実行]またはF5を押す。 [デバッグ]を押したがるが違う。
  40. 40. SSMS – クエリを書く2 [インテリセンス] -> テーブル名等、オブジェクトの頭を入力すれば候補が出る -> もう一回出すには[Ctrl]+[Space] -> 邪魔な場合は[Ctrl]を押していると下が透ける
  41. 41. SSMS – クエリを書く3 [出力形式] -> テキスト形式 -> 表形式 -> ファイルに出力 ↓下記か、設定で切り替え
  42. 42. SSMS – クエリを書く4 [実行プランを表示] -> Ctrl + M
  43. 43. SSMS – クエリを書く5 [トランザクションの注意点1] -> SSMSでのトランザクションは自動コミットがデフォルトで す。 ↓下記のようにやればOK --begin tranを入れる begin tran delete from Sales.SalesOrderDetail where SalesOrderid = 43659 rollback commit -> 余談:TRUNCATE TABLEもロールバックできます。
  44. 44. SMSS – クエリを書く6 -> Oracleみたいにする場合は下記 Set implicit_transactions on [その他] -> Dual表はないので、fromなし構文を使用 select ISNUMERIC('a') -> システム関数、構成関数等 select host_name() select serverproperty(‘edition’) select @@version https://msdn.microsoft.com/ja-jp/library/ms187786(v=SQL.120).aspx https://msdn.microsoft.com/ja-jp/library/ms173823(v=sql.120).aspx https://msdn.microsoft.com/ja-jp/library/ms174396(v=SQL.120).aspx
  45. 45. SQL [使用できるSQL構文] -> 一般的なANSI準拠SQLはすべて対応 -> 集計関数はちょっとクセありRANK()他 -> 再帰クエリ(CTE)の記述も可 -> XMLにも対応しているのでXQueryの記述も可 -> PIVOT他の集計関数も記載可 -> インデックスヒントも書けます -> DBのチェック等はDBCCコマンド https://msdn.microsoft.com/ja-jp/library/ms188796(v=sql.120).aspx -> Unicode文字列を扱う場合は頭にNを! select * From person.person where FirstName like N'Bob%'
  46. 46. データベースの作成1 [復旧モデル] -> 完全 トランザクションログの内容をすべて保持し 復旧時には任意の時点に普及することが可能 トランザクションログのバックアップ管理が必要 -> 一括ログ ログ記録するが最小限の一括ログしか記録しない -> 単純 トランザクションログの管理を行わない。 全体/差分/増分バックアップ時点までにしか リストアできない。 修復時の復旧可能性は 完全 > 一括ログ > 単純
  47. 47. データベースの作成2 [注意点] -> 自動終了 Falseで! (ExpressでTrueになるケースあり) -> 統計の自動更新 Trueで! [基本ファイル構成] -> データファイル(.mdf) -> ログファイル(.ldf) の2つ
  48. 48. データベースの作成3 [ファイル拡張] -> データファイル(.mdf)の自動拡張設定。以前は%での拡張 だったので、*MB単位に変更する。DBが大きくなればなるほ どファイル拡張のコストが大変なことになる [ページの概念] -> SQLServerはページと呼ばれる8Kバイト単位のファイルで 構成される -> 8ページで1エクステント(64K) 同一ページが拡張した場合はそのページ専用のエクステントが できる
  49. 49. システムデータベース [SQLServerの起動に必要なデータベースの主な役割] -> master 保持しているデータベース情報 ログイン情報 -> msdb SQLServerエージェントのジョブ情報、 スケジュールの設定情報、 バックアップ履歴など -> model CREATE DATABASEのテンプレート -> tempdb ソート用。勝手につくられる -> resource 内部用(見えません) [ちなみに”データ破損に備える”で以前喋りました] http://www.slideshare.net/savurou/sql-server-47408528
  50. 50. クラスタ化インデックス1 [クラスタ化インデックスとは] -> PrimaryKey順に物理的にソートして保存するテーブル構造。 データがInsertされると、そのデータはテーブルの該当する PrimaryKeyの場所(リーフページ)にデータを入れる。場合に よってはページ分割発生。 [注意点] -> 自然キーをPrimaryKeyにしていると、Insert時に断片化が発 生しやすい。 => リーフページのページの余裕を設定するFillfactorがデフォ ルト100%になっているため。 => サロゲートキーを主キーにするか、Fillfactorを適切に 設定する
  51. 51. テーブル系のその他機能1 [テーブル系] ->ビュー、トリガー、ストアド、インデックス付きビュー(マ テビュー)、シーケンス、一時テーブル、制約、BLOB ・・・一般的なものはそろってます -> カラムストアインデックス(列ベースのデータストレージ) -> フルテキスト検索 -> パーティション -> ストアド、トリガーをC#、VB.NETのコードで書ける SQLCLR
  52. 52. テーブル系のその他機能2 [インデックス系] https://msdn.microsoft.com/ja-jp/library/ms175049(v=sql.120).aspx -> 非クラスタ化インデックス => 普通のインデックスです。 -> リーフページに値を置くinclude -> 計算列インデックス -> ほとんどデータがないカラム向けにスパース -> Enterpriseでは、インデックスの再構築をオンラインで行え る
  53. 53. バックアップとリストア -> x86とx64とのバックアップの行き来OK ->互換性バージョンに関係なく古いバージョンへのリストア不 可 => SQLServer2012、互換性レベル110のバックアップを SQLServer2014にリストアしてしまうと、もう SQLServer2012環境にはリストアできません -> バックアップの圧縮は2014Standard以上から。できない Editionはzip圧縮で・・・
  54. 54. 便利なツール① [SQL Server Profiler] -> DBに投げられたSQLを監視・保存できる => デフォルトインストールでは入らないので、 「管理ツール(完全)」をインストールする => ExpressEditionにはありませんが、下記を行えば DBに発行されたSQLを見ることはできます。 http://nishio.hateblo.jp/entry/20120906/1346945058 [データベースエンジンチューニングアドバイザ] -> 指定されたデータベースでクエリがどのように処理されるの かを調査し、インデックス、インデックス付きビュー、パー ティション分割などのデータベース構造を更新/提案してくれ る。
  55. 55. 便利なツール② [SQLCMD] -> SSMSが使えない、ログインできなくなった時用の コマンドプロンプト形式のツール [SQL整形ツール] -> PoorMansT-SQLFormaterSSMSAddins => 下記にインストールされるので、同様に12.0のフォルダを 作成して、11.0の内容をコピー C:¥ProgramData¥Microsoft¥SQL Server Management Studio¥11.0
  56. 56. CPUとメモリ割り当て -> CPUの割り当てができます。 -> メモリの割り当てもできます。 => SQLサーバーの特徴として 一度SQLServerがメモリを 割り当ててしまうと、インスタ ンスを再起動しない限り、 つかんだまま離さないという 仕様がある。裏技としてDB動作 中にメモリ割り当てを一旦小さく すると開放する。
  57. 57. アプリケーションからの接続① [接続用のAPI] -> .NETの場合はSQLClientで -> JavaならJDBC -> ODBC経由で -> FireDAC、その他・・・ [通信ポート] -> TCP:1433 -> Expressの場合は動的ポートになるので、下記参照 https://msdn.microsoft.com/ja-jp/library/cc646023(v=sql.120).aspx
  58. 58. SqlClientを使用した接続① [接続文字列] -> SqlConnectionStringBuilderで。各値をプロパティで設定 可能。 -> Connectionを張るのにコストがかかる。必ずPoolingを Trueにする -> コネクションは使いまわしてください。ループ中に別SQLを 発行する場合に別コネクションを張る必要はないです。 [SqlDataReaderかSqlDataAdapter+DataSetか] -> SqlDataReaderはカーソルでFetchしていく感じで DataSetに比べるとかなり軽い -> DataSetはFillした段階で全データ取得するので DBに負担はかかりにくい。
  59. 59. SqlClientを使用した接続② [パラメータクエリを書く] -> SQLインジェクションの対応があるので必須 -> パラメータクエリを書かないとアドホッククエリとなり SQLのコンパイルが都度発生し、クエリキャッシュが増大 -> SQLServerはセミコロンで区切ってSQLを複数 一度に発行できるので、不正な操作をされないよう注意 -> 型を合わせる。varcharとnvarcharの間で、暗黙の型変換が 起こると異常に遅くなります。 => 実行プランで[右クリック]-[実行プランのXML表示] の中にCONVERT_IMPLICITが入っていればNG。 -> AddWithValue構文は文字列の長さに応じて都度別の キャッシュができてしまうので注意
  60. 60. 参考 基本はMSDNで検索 自習書 http://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2014/technology/self-learning.aspx MSSQLSupportTeamBlog http://blogs.msdn.com/b/jpsql/ @IT DatabaExpert http://www.atmarkit.co.jp/ait/subtop/db/ ムッシュのページ http://blog.engineer-memo.com/ おださんのページ http://odashinsuke.hatenablog.com/
  61. 61. ◆ご清聴ありがとうございました

×