MSSQL

dtsrun

dtsrunコマンドを使用するとコマンドプロンプトよりDTSを実行することができる 使用例は以下の通り dtsrun /S hogesv /U hogeuser /P hogepass /N dts_name /M dts_password各オプションは以下の通り /S・・・サーバ名(インスタンスを指定する場合はサーバ名…

xp_cmdshell

xp_cmdshellを使用するとSQL Server から外部プログラムを呼び出すことができる 使用例は以下の通り DECLARE @Rtn int EXEC @Rtn = master.dbo.xp_cmdshell 'dir c:\' SELECT @Rtn AS [結果] なお、xp_cmdshellはデフォルトでは無効になっている xp_cmdshell…

計算列

同じテーブルの他の列を使用した結果を列として定義することができる 計算列の値は物理的には存在しないがインデックスを作成することはできる 使用例は以下の通り CREATE TABLE [dbo].[M_商品]( [商品コード] [char](10) NOT NULL, [適用年月日] [char](8) …

オンラインバックアップ

オンラインバックアップ・リカバリを行うSQLは以下の通り バックアップ BACKUP DATABASE sampleDB TO DISK = 'D:\BKFolder\test_DB.bk' リストア RESTORE DATABASE sampleDB FROM DISK = 'D:\BKFolder\test_DB.bk' WITH REPLACE バックアップ圧縮 BACKUP DAT…

オフラインバックアップ

SQLServerのオフラインバックは対象のデータベースをデタッチし、 mdfとldfファイルを任意のフォルダへコピーするだけである リカバリの際はそのファイルをアタッチすればよい アタッチは以下のようにクエリで行うことも可能 CREATE DATABASE test_Db ON ( F…

データ圧縮

テーブル内のデータそのものを圧縮できる機能 ディスクのI/Oを減らしてパフォーマンスの向上させることができる デメリットとしてCPU時間が増加するので CPUのリソースが不十分な場合にはトータルでのレスポンスが低下することがある 指定したテーブルの圧縮…

ロックヒント

SQL Serverでは基本的には行単位のロックが使用されるが WITH句でロックヒントを与えることによりロックの単位を指定することができる 以下、UPDATEとINSERTでテーブルロックを使用した例 BEGIN TRAN UPDATE TBL_LOCK WITH(TABLOCK) SET COLNAME = 'AAA' WHE…

インデックスの断片化

インデックスの断片化を調査するSQLは以下の通り SELECT DB_NAME(database_id) as db_name ,OBJECT_NAME(object_id) as table_name ,(select min(name) from sys.indexes where sys.indexes.object_id = sys.dm_db_index_physical_stats.object_id and sys.i…

付加列インデックス

SqlServerではカバリングインデックスの欠点を補うものとして 付加列インデックスというものがある。 まず、カバリングインデックスとは非クラスタ化インデックスを応用したものである。 通常の非クラスタ化インデックスは主に検索条件に使用する項目につけ…

SET ステートメント

現在のセッションにおける特定の情報の処理方法を変更するコマンド 使用例は以下のとおり ロックのタイムアウト時間を設定する(ミリ秒) SET LOCK_TIMEOUT 5000 処理された行数を結果セットとして返さない SET NOCOUNT OM 処理された行数を結果セットとして返…

ログインアカウントの移行

異なるサーバへデータベースのバックアップを復元した場合、 ログインアカウントは復元されない。 これはログインアカウントはmasterデータベースに格納されているためである。 なので、移行先のサーバにも同じようにログインアカウントを追加する必要がある…

プロシージャキャッシュ

プロシージャキャッシュとは実行プランの格納に使用されるメモリ プールの部分のこと。 メモリに負荷が存在する場合、コストの低いのものから順にキャッシュから削除される。 現在のプロシージャキャッシュの状況を参照するには 動的管理ビューのdm_exec_cac…

リンクサーバでOracleに接続

Management Stadio を使ってOracleに接続するリンクサーバを設定する手順は以下の通り。 1.Management Stadioの「サーバーオブジェクト」→「リンクサーバ」→「新しいリンクサーバー」 2.ダイアログが起動されるので以下の内容を入力する 「全般」ページ …

sqlcmdユーティリティ

コマンドプロンプトよりT-SQLを実行するためのツール。 以下、使用例。 使用例 (D:\BKFolder\test_db_backup.sqlを実行する) sqlcmd -S harada\SQLEX2008 -U sa -P hogePwd -i D:\BKFolder\test_db_backup.sql各オプションの説明は以下の通り S・・・接続す…

ストアドのデバッグ

Microsoft SQL Server Management Stadioでストアドプロシージャのデバッグを行うことができる。 手順は以下の通り。 1.ストアドを実行するドライバを作成する (デバッグしたいストアドの「ストアドプロシージャをスクリプト化」→「Execute」→「新しいクエ…

dm_exec_query_stats

dm_exec_query_statsはキャッシュされたSQLの集計パフォーマンス統計を取得できる動的管理ビューです。 以下はdm_exec_query_statsを利用してキャッシュされたSQLの中で実行時間が遅いものを取得するSQL例です。 SELECT TOP 100 SUBSTRING(text, (statement_…

bcp

テーブルのデータのエクスポート・インポートしたりできるツール。 コマンドプロンプトより実行することができる。 bcpの書式 bcp.exe DB名.スキーマ(デフォルトならdbo).テーブル名 入出力(IN,OUT,QUERYOUTのいずれか) テキストのパス -U ユーザ名 -P パス…

変更の保存が許可されていません

SQL Server 2008でテーブルのカラムを追加・変更などした場合、 以下のメッセージが表示され変更ができなくなることがある。 変更の保存が許可されていません。 行った変更には、次のテーブルを削除して再作成することが必要になります。 再作成できないテー…

SQL Server 2008のインストールでアクセス拒否

SQL Server 2008のインストールでインスタンスを作成しているときに 「アクセスが拒否されました」のエラーが出てインストールに失敗することがある。 これはローカルセキュリティポリシーの「プログラムのデバッグ」に インストール時に指定するサービスと…

AWE

Address Windowing Extensionsの略。32ビットOSでの大容量物理メモリサポート機能のこと。 32ビットOSのSQL SERVER で大容量のメモリを使用したい場合は有効にする必要がある。(デフォルト無効) 2GB以上のメモリを割り当てたい場合は有効にしておくべき。 ●…

sp_configure

現在のサーバーのグローバル構成設定を表示または変更する。 表示するには以下のコマンドを実行する。 sp_configure※デフォルトではすべてのオプションは表示されていない。 表示するには「show advanced options」を変更する必要がある。 ・minimum・・・構…

SET TRANSACTION ISOLATION LEVEL

トランザクション内のロック動作を指定する。 主なオプションは以下の通り。 ・READ UNCOMMITTED他のトランザクションで変更されたが、まだコミットされていない行を読み取れる。 読み取った値は他のトランザクションで変更された値となる(ダーティリード) …

照合順序

●照合順序の種類 ・インスタンスの照合順序 →インスタンス作成時に設定。一度設定するとすべてのデータベースを作成しなおさなければ変更できない。 ・データベースの照合順序 →データベース作成時に設定。 作成後にも変更可能だが既に作成済のテーブルの照…

Merge文

Sql Server 2008からの新機能。(oracleは9iからサポート) 以下、変数を使用したサンプル。 declare @wk_year char(4) = '2009' declare @wk_name char(10) = '商品D' declare @wk_money numeric = 666 MERGE hoge --更新を行う表を指定 Using (select '' as …

インデックスの種類

SQL SERVER 2008にあるインデックスは以下の通り。 ●クラスタ化インデックス 物理的にその順序で格納される。 1つしか作成できない。 デフォルトでプライマリキーのインデックス。 BETWEENで対象となる列やJOINで結合する列、ORDER BYの対象となり易い列に…

GROUPING SETS

SQL SERVER 2008から使用可能。(Oracle 10gも可) SQL2003 標準規格で定義されている。 全体合計や、指定した項目の値ごとの合計を取得できる。 ・通常のGroup By select hoge.YEAR , hoge.NAME , sum(money) From hoge group by hoge.YEAR , hoge.NAME ・Gro…

SQL Agentが起動できない

SQL SERVER 2008 Express EditionでSQL Agentサービスを起動しようとするとエラーが発生。 「SQL Serverマネージャ」で「SQL Server Agent」のプロパティ→「詳細設定」タブよりログのパスを取得、 取得したパスのログを見てみると。。。。 ↓ちなみにログのパ…

Change Data Capture

SQL SERVER2008からの新機能。 INSERT、UPDATE、DELETEステートメントの更新履歴を保管しておく機能。 これにより指定した時間の過去のデータを参照したり、データを回復したりできる。 OracleのFlashBack Query(Total Recallともいう)のようなもの。 ●設定…

SQL SERVER 2008の新機能

追加された機能でよさそうなのをメモ ●管理者向け機能 透過的データ暗号化 →バイナリエディタでmdfファイルを見ようとしても暗号化されている。 全操作監査 →Change Data Captureで更新履歴を残すことができる&過去のデータを時間指定で取得できる。 Backup…

SQL Server Compact 3.5

ファイルベースのデータベースエンジン。特徴は以下の通り。 ・無償 ・ファイルサイズが小さい(2MB程度) ・ストアドプロシージャ、トリガをサポートしてない ・使用できるサイズは4GBまでサポート(ただ、現実には200MBぐらいまでにしておくのが適当) ・ASP.N…