Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
◆ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Sql server浅く広く

4,159 views

Published on

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

2015/09/05

Published in: Technology
  • Dating direct: ❤❤❤ http://bit.ly/2F4cEJi ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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. ◆ご清聴ありがとうございました

×