SQL Server

【SQL Server】データのバックアップ・リストア

■ バックアップファイルを生成するには * 以下のSQL文を実行する サンプル データベース「SampleDB」を「C:\temp\backupDb.bck」に保存する場合 /* BACKUP DATABASE [対象データベース] TO DISK = 'バックアップファイル保存先' WITH INIT; */ BACKUP DATABA…

【SQL Server】【ストアド】SQL Server における カンマ区切り のデータの扱い

■ カンマ区切りデータを分ける * そんなメソッドないので、ストアドで独自実装 サンプル CREATE FUNCTION Split ( @inputeValue VARCHAR(MAX), @delimiter CHAR(1) ) RETURNS @returnTable TABLE(SplitedValue VARCHAR(MAX)) BEGIN -- 入力値の最大文字列数…

【SQL Server】親子階層を表現する

方法1:WITHを使用する * SQL Server2005以降で使用可能 サンプル * 以下の記事を参照のこと WITH 句 ~共通テーブル式~ http://blogs.yahoo.co.jp/dk521123/29639816.html 方法2:WITHおよびHierarchyID データ型を使用する * SQL Server2008以降で使用可…

【SQL】【SQL Server】SQL Server の断片化

■ 知識編 断片化とは? http://blogs.msdn.com/b/jpsql/archive/2011/10/17/10224501.aspx より、一般的に、断片化とは、以下の状況のいずれかである。 ~~~ * 論理スキャンフラグメンテーション (logical scan fragmentation) の値が低い状況 * 平均ペー…

【SQL Server】SQL Server の統計情報

■ はじめに 統計情報についての説明などは、以下の記事を参照のこと。 http://blogs.yahoo.co.jp/dk521123/30561702.html ■ 手動で統計情報更新 テーブル個別 UPDATE STATISTICS 【テーブル名】 テーブル個別(全行スキャン) UPDATE STATISTICS 【テーブル名…

【SQL Server】上位X件のレコードを取得する ~Top句~

Top句 * 先頭行を指定して抽出する * 変数が使えるようになるのは、SQL Server 2005から。 ただし、括弧が必要である。 SELECT TOP(@変数) * FROM ... サンプル DECLARE @topNum AS int = 10; SELECT TOP(@topNum) * FROM TestTable 使用上の注意 * 「TOP(X)…

【SQL Server】SQL Server の「全角・半角」「大文字・小文字」「平仮名・カタカナ」の扱い

SQL Server の全角・半角の扱い カタカナの全角・半角 * デフォルトだと区別しない * 「ギ」と「ギ」も同じ扱いで区別しない * 「ギ」と「キ」は異なるので、以下【サンプル】の「id = 01」は引っかからない サンプル SELECT * FROM TestTable WHERE Name LIK…

【SQL Server】実行プランの削除 ~ DBCC FREEPROCCACHE ~

全ての実行プランを削除 構文 DBCC FREEPROCCACHE WITH NO_INFOMSGS; 補足説明 * WITH NO_INFOMSGS 句を指定して、情報メッセージが表示されないようにする 特定の実行プランを削除 構文 SELECT plan_handle, st.text FROM sys.dm_exec_cached_plans CROSS A…

【SQL】データ型/文字列編 (char型 / varchar型 / nvarchar型)

char 型 / varchar 型 / nvarchar 型 char 型 * 固定長 * 最大長は8000バイト デメリット * 列の長さより短い値を格納した場合、足りない分まで空白が埋め込まれる (バグの原因になる。Trim()などで回避。) 例:char(10) と定義され、"music" というデータ…

【SQL Server】bcpコマンド

概要 * bcp (Bulk Copy Program):一括コピープログラム * SQL Serverとデータファイルの双方向でのデータのやり取りが可能にする 使いどころ * データのインポート/エクスポートを行う場合 * データベースの内容をCSV化する場合 * SQL Server間のデータのコ…

【SQL Server】クエリヒント / テーブルヒント

はじめに まずは、以下の動画をみた方がいい。 http://technet.microsoft.com/ja-jp/sql_5mins16-2.aspx 概要 ■通常は... 最適と思われる実行プランを、オプティマイザが選んでデータアクセスしてくれる 【問題点】 * オプティマイザは、必ずしも完璧じゃな…

【SQL Server】【Tool】SQL Server の調査ツール [4] ~ RMLユーティリティ/SQLIOSIM の利用 ~

RMLユーティリティ * パフォーマンス分析&検証ツール 参考文献 http://support.microsoft.com/kb/944837/ja ダウンロード http://jp.downv.com/install-SQL-Server%82%CCRML%83%86%81%5B%83e%83B%83%8A%83e%83B-10386038.htm SQLIOSIM * ディスクI/Oの動作を…

【SQL Server】Microsoft SQL Server Management Studio について

ダウンロード先 * Microsoft SQL Server Management Studio Express * 「SQLManagementStudio_x64_JPN.exe」は、64ビット用 * 「SQLManagementStudio_x86_JPN.exe」は、32ビット用 http://www.microsoft.com/ja-jp/download/details.aspx?id=22985 参考文献 …

【SQL Server】SQL Serverのインデックスあれこれ

■ はじめに https://dk521123.hatenablog.com/entry/2010/04/01/175501 でやったインデックスを行ったが、SQL Server に絞って書く。 目次 【1】SQL Serverのインデックス構造 1)クラスタ化インデックス 2)非クラスタ化インデックス 【2】クラスタ化イ…

【SQL Server】Visio2010を使って、SQL Server の DB から ER図を作成する

手順 [1] Visioを起動したら、[ファイル]-[新規作成]-[ソフトウェアとデータベース]-[データベースモデル図]を選択 [2] [データベース]-[リバースエンジニアリング]を選択 ダウンロード * 評価版であれば、60日間限定であるが、ユーザ登録すれば無料で使える…

【SQL Server】SQL Server の データベース内部構成

SQL Server データベースは、2つのファイルで構成されている。 [1] データ ファイル(.mdf) [2] トランザクション ログ ファイル(.ldf) [1] データ ファイル * 以下の情報が格納されている。 + テーブル + データ + インデックス + ビュー + ストアドプロ…

【SQL Server】データ パーティション

■ はじめに パーティション (partition) について、メモる。 ■ データ パーティション * データの範囲によって格納場所(パーティション) を分割することができる機能 * Oracle の「レンジ パーティション」に相当する機能 * SQL Server 2005から追加された…

【SQL Server】お勧めの資料

参考資料 自習室シリーズ SQL Server 2008 http://www.microsoft.com/ja-jp/sqlserver/2008/self-learning/default.aspx SQL Server 2008 R2 http://www.microsoft.com/ja-jp/sqlserver/2008/r2/technology/self-learning.aspx Troubleshooting SQL Server: …

【SQL Server】【Tool】SQL Server の調査ツール [3] ~ 実行プランの分析 ~

概要 * SQLが正しい実行プラン(実行計画)になっているか確認する事が重要で、SQL Serverでの実行プランの確認の仕方を記す。 * 実行プランについては、以下を参照のこと。 http://blogs.yahoo.co.jp/dk521123/28850809.html 実行プランの取得方法 やり方・…

【SQL Server】【Tool】SQL Server の調査ツール [0] ~ 概要 ~

概要 やみくもにパフォーマンス改善を行うのではなく、ボトルネックとなっている箇所を調べ、その箇所に対して改善することが重要である。 SQL Serverにおいて、その「ボトルネックとなっている箇所を調べ」るためのツールについて調べたことを以下に記す。 …

【SQL Server】【Tool】SQL Server の調査ツール [2] ~ SQLDiag/PSSDIAG/SQL Nexus ツールの利用 ~

データ収集ユーティリティ SQLDiag ツール 説明・動画 http://technet.microsoft.com/ja-jp/video/sql_5mins18 * SQL Serverの標準管理ツール * SQL Serverの現在の状態をなどを収集できる [診断情報の種類] + Windowsパフォーマンス・ログ + Windowsイベン…

【SQL】【SQL Server】SQL Server のパフォーマンスをあげることを考える

全般 http://technet.microsoft.com/ja-jp/ff606481 より、初めに以下を試すといい。 [1-1] インデックスの設定 * どのようなインデックスが必要かを自動で判定してくれるツールが、データーベースエンジンチューニングアドバイザを参考にするといい http://…

【SQL Server】【ストアド】ストアドプロシージャ ~カーソル編~

■ カーソルとは * クエリの結果集合を一時的に蓄えておくための仮想的な作業領域のこと ■ メリット / 用途 * カーソルを使用すると、SELECTの結果に対して、1行ごとに繰り返し処理を行うことができる(分かりやすい!) http://www.near-future.com/sqlserver…

【SQL Server】【ストアド】ストアドプロシージャ / ストアドファンクション

■ 構文 CREATE PROCEDURE プロシージャ名 [@パラメータ データ型, ・・・] AS SQL文 SQL Sever Management Studioで確認する * Management Studio上の「オブジェクトエクスプローラ」より[プログラミング]-[ストアドプロシージャ]で登録したストアドプロシー…

【SQL Server】【Tool】SQL Server の調査ツール [1] ~ SQL Server Profiler(SQLプロファイラ)の利用 ~

SQLプロファイラ http://msdn.microsoft.com/ja-jp/library/ms979207.aspx SQL ステートメントとストアド プロシージャに対し、デバッグ、トラブルシューティング、監視、計測が可能となる。 * 実行したクエリの実行状態を把握 * 実行したクエリのロックの取…

【SQL】【SQL Server】暗号化 (まとめ)

まとめ http://blogs.yahoo.co.jp/dk521123/35411224.html の機能のまとめを以下に示す USE [testDataBase]; GO /* 対称キー削除 */ IF EXISTS (SELECT * FROM sys.symmetric_keys WHERE [name] = 'testKeyName01') DROP SYMMETRIC KEY testKeyName01 REMOVE…

【SQL】【SQL Server】暗号化

基本編 DBに対して暗号化有効 http://msdn.microsoft.com/ja-jp/library/bb630389.aspx 構文 ALTER DATABASE 【データベース名】 SET ENCRYPTION ON; 例 USE testDataBase; GO ALTER DATABASE testDataBaseSET ENCRYPTION ON; GO マスタキーの作成 http://ms…

【SQL Server】データ型変換

型の変換を行う Convert() 構文 * value を type 型に変換 CONVERT(type, value) サンプル1:日付の比較 SELECT * FROM Schedule WHERE CONVERT(DATE, date) = CONVERT(DATE,‘2010/09/02') サンプル2:年月を表示 SELECT CONVERT(CHAR(7), date, 111) AS Yea…

【SQL】【SQL Server】SQL Server Expressのインストール

■ SQL Server 2008 Express 注意点 * 若干、詰まったところをピックアップして、手順を残しておく(基本的には、以下を参照のこと) * 基本的には、以下に書いてあるが、今回は、「機能選択」において、全ての機能を選択しました http://www.dbonline.jp/sql…

【SQL Server】【ストアド】ストアドプロシージャ ~ サンプル編 ~

■ サンプル USE [Database Name] GO SET ANSI NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[procedure.Name] @PROCEDURE_ID INT AS BEGIN SET NOCOUNT ON; IF @PROCEDURE_ID > 0 SELECT * FROM tableName1 WHERE ID = @PROCEDURE_ID AN…