タグ

ブックマーク / matutak.hatenablog.com (15)

  • ステップ数を取得する WSH スクリプト。SQL Server の DB オブジェクト(ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー)のステップ数を取得。 - matu_tak’s blog

    弊社の SQL Server コンサルティング サービスでは、最初に DB 内のオブジェクト(ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー)のステップ数をお伺いすることが多いので、そのときに利用しているスクリプトです。 多くの環境で実行できるようにするために WSH スクリプト(VBScript)として作成しています(SQL Server 2000 対応版は、下のほうに添付しています)。 ■ 説明 SQL Server 内に作成したデータベース オブジェクト(ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー)のステップ数を取得する WSH スクリプト(VBScirpt)。 以下のコードをメモ帳へ貼り付けて、「.vbs」という拡張子で保存するか、添付のファイルをダウンロードすれば、各種オブジェクトのステップ数を確認することができます。 ファイルのダウンロード: Get

    ステップ数を取得する WSH スクリプト。SQL Server の DB オブジェクト(ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー)のステップ数を取得。 - matu_tak’s blog
  • データ プロファイル タスクによるデータの分布状況の表示 - matu_tak’s blog

    SQL Server 2008 からは、データ プロファイル タスク機能がサポートされました。この機能は、データの分布状況や、データの長さの分布状況、NULL 値の割合などを表示することができるので大変便利です。データ プロファイル タスクは、SQL Server Integration Services(SSIS)のタスクとして実装され、出力結果を「Data Profile Viewer」ツールを利用してグラフィカルに参照することができます。 データ プロファイル タスクの利用手順は、次のとおりです。 まずは、Business Intelligence Development Studio を起動して、新しい Integration Services プロジェクトを作成します。 次に、ツールボックスから[データ プロファイル タスク]を配置します。 次に、[接続マネージャ]ペインで右クリ

    データ プロファイル タスクによるデータの分布状況の表示 - matu_tak’s blog
    nakunaru
    nakunaru 2010/02/16
    2008 データ分布
  • 変更データ キャプチャ(CDC: Change Data Capture)による更新履歴の保管(SQL Server 2008) - matu_tak’s blog

    SQL Server 2008 からは、「変更データ キャプチャ」機能がサポートされました。この機能は、UPDATE や INSERT、DELETE ステートメントによる更新履歴を保管できる(変更データをキャプチャできる)機能です。これにより、Oracle 11g における Total Recall 機能のように、指定した時間の過去のデータを参照したり、オペレーション ミス時のデータ回復などで利用できるようになります。変更データ キャプチャは、悪意のあるユーザーによって、データが改ざんされた場合などに、改ざんされる前のデータを復旧する目的としても利用することができます。 変更データ キャプチャを利用する手順は、次のとおりです。 まずは、データベースに対して「sp_cdc_enable_db」ストアド プロシージャを実行して、変更データ キャプチャ(CDC)を有効化します。 USE データベ

    変更データ キャプチャ(CDC: Change Data Capture)による更新履歴の保管(SQL Server 2008) - matu_tak’s blog
    nakunaru
    nakunaru 2010/02/09
    フラッシュバックバージョン問い合わせ
  • 変更データ キャプチャでの時間指定での過去データの参照 - matu_tak’s blog

    SQL Server 2008 からの新機能である「変更データ キャプチャ」では、特定の時間を指定して、昔のデータの参照することも簡単に行えます。変更データ キャプチャでは、「lsn_time_mapping」という名前のテーブルが自動的に作成されて、LSN と時刻とのマッピングが管理されているからです。これは、次のように確認できます。 SELECT * FROM cdc.lsn_time_mapping このマッピング テーブルは、「fn_cdc_map_time_to_lsn」関数を利用すると、時刻をもとに LSN 番号を取得することができるので、この LSN 番号を「fn_cdc_get_all_changes_テーブル名」関数へ与えるようにすると、特定の時間の範囲を指定して、昔のデータを参照できるようになります。これは次のように利用できます。 /*-----------------

    変更データ キャプチャでの時間指定での過去データの参照 - matu_tak’s blog
    nakunaru
    nakunaru 2010/02/09
    フラッシュバックバージョン問い合わせ
  • SQL Azure へ SQL Server 2008 Management Studio から接続 - matu_tak’s blog

    SQL Azure への接続は、SQL Server 2008 R2 からは何の問題もなく接続することができますが、SQL Server 2008 の場合は、オブジェクト エクスプローラーが対応しておらず、クエリ エディタまたは sqlcmd 経由での接続を行う必要があります。 SQL Server 2008 では、Management Studio を起動したときの[サーバーへの接続]ダイアログから接続しようとすると、次のようにエラーが発生します。 このエラーは、オブジェクト エクスプローラーへ接続しようとしているために発生しています。したがって、この[サーバーへの接続]ダイアログは、[キャンセル]ボタンをクリックして閉じます。 Management Studio が起動したら、ツールバーの[新しいクエリ]ボタンをクリックして、SQL Azure サーバーへ接続します。 これでクエリ エ

    SQL Azure へ SQL Server 2008 Management Studio から接続 - matu_tak’s blog
  • SQL Azure サーバーのデータセンターの場所変更 - matu_tak’s blog

    SQL Azure では、最初に SQL Azure サーバーを作成しますが、そのときに「Location」でデータセンターの場所を変更します。 選択したデータセンターの場所によって金額が異なりますので、詳しくは Windows Azure の料金プランをご覧ください。

    SQL Azure サーバーのデータセンターの場所変更 - matu_tak’s blog
  • SQL Azure へ SQL Server 2008 sqlcmd ユーティリティから接続 - matu_tak’s blog

    SQL Azure への接続は、SQL Server 2008 R2 からは何の問題もなく接続することができますが、SQL Server 2008 の場合は、オブジェクト エクスプローラーが対応しておらず、クエリ エディタまたは sqlcmd 経由での接続を行う必要があります。 sqlcmd ユーティリティから SQL Azure へ接続するには、コマンドプロンプトを起動して、次のように実行します。 sqlcmd /S "SQL Azure サーバー名" /U "管理者アカウント名" /P パスワード /d 接続したいデータベースの名前 管理者アカウント名は「アカウント名@サーバー名」(matumoto@rnonu29rg2 のように rnonu29rg2.database.windows.net の先頭部分を付ける)で指定する必要があります。暗号化接続(SSL 接続)を行う場合は /N

    SQL Azure へ SQL Server 2008 sqlcmd ユーティリティから接続 - matu_tak’s blog
  • SQL Server 2000 のシステム データベースに含まれるもの - matu_tak’s blog

    SQL Server 2000 から SQL Server 2008 へデータベースを移行する際には、システム データベースに格納されている情報も把握しておく必要があります。SQL Server 2000 のシステム データベースには、master、msdb、model、tempdb、distribution の 5つがありますが、tempdb は一時領域用のデータベースなので移行する必要はありません。また、distribution はレプリケーションで利用されるデータベースなので、レプリケーション環境での移行時にのみ関係します。model は、新しくデータベースを作成する際のテンプレート データベースなので、これも移行する必要はありません。 したがって、システム データベースの中に含まれるものを意識するのは、master と msdb の 2つのデータベースだけで良いことになります。ma

    SQL Server 2000 のシステム データベースに含まれるもの - matu_tak’s blog
  • SQL Server の自動復旧処理 - matu_tak’s blog

    SQL Server では、チェックポイントは、デフォルトでは、約 1分ごと(トランザクションが絶えず実行されている場合)に発生しているので、その間(チェックポイントとチェックポイントの間)に障害(停電など)が発生することがあり得ます。これにより、実際のデータ(.mdf)への反映が行われていないトランザクションが存在することになるので、このような障害が発生した場合には、SQL Server は、障害から復旧した後の起動時に、次のように動作します。 トランザクション ログを読み、障害前にコミット済みのトランザクションを探す。 コミットされたトランザクションを見つけた場合には、ログに記録された更新履歴をもとにトランザクションをロール フォワードする(やり直す)。 コミットされていないトランザクションを見つけた場合は、トランザクションをロールバックする(取り消す)。 この動作は「自動復旧処理」と

    SQL Server の自動復旧処理 - matu_tak’s blog
  • SQL Server でチェックポイントが発生するタイミング - matu_tak’s blog

    SQL Server でチェックポイント(CHECKPOINT)が発生するタイミングは、SQL Server の構成オプションの「復旧間隔」の設定によって決まります。この設定は、オブジェクト エクスプローラで、サーバー名を右クリックして、[プロパティ]をクリックし、[データベースの設定]ページで確認できます [復旧間隔]オプションは、分単位で設定しますが、ここで指定した時間がそのままチェックポイントが発生する間隔になるというわけではなく、データベースの復旧(自動復旧処理)にかかる時間を指定します。復旧にかかる時間は、障害前に実行されていたトランザクションの量によって変化し、たとえば、復旧間隔オプションを「5」分に設定した場合、復旧にかかる時間が 5分以内に収まるようにチェックポイントが発生します。絶え間なくトランザクションが実行されているような場合には、約 5分ごとにチェックポイントが発生

    SQL Server でチェックポイントが発生するタイミング - matu_tak’s blog
  • SQL Server の復旧モデルとトランザクション ログ - matu_tak’s blog

    SQL Server でのトランザクション ログの内部動作は、データベースの「復旧モデル」の設定によって変化します。復旧モデルには、「完全」、「一括ログ」、「単純」の 3種類があり、現在の復旧モデルを確認/変更するには、次のように操作して、データベースのプロパティを開きます。 SQL ステートメントを使用して復旧モデルを設定したい場合は、ALTER DATABASE ステートメントを次のように実行します。 USE master ALTER DATABASE データベース名 SET RECOVERY { FULL | BULK_LOGGED | SIMPLE } 3つの復旧モデルの違いは、次のとおりです。 ■ 完全(Full)モデル 完全モデルは、トランザクション ログへすべての処理履歴を完全に記録するモデルです。これは、Standard Edition 以上のデフォルトの復旧モデルです。こ

    SQL Server の復旧モデルとトランザクション ログ - matu_tak’s blog
  • SQL Server でのトランザクション ログが満杯の場合のエラー - matu_tak’s blog

    SQL Server では、デフォルトでは、トランザクション ログは、ハード ディスクの空き容量がなくなるまで、またはファイルの最大サイズに達するまで、どんどん肥大化し続けます。 ディスクの空き領域がなくなって、トランザクション ログが満杯になった場合には、次のようにエラー 9002「データベース 'XXX' のトランザクション ログがいっぱいです」が発生します。 このエラーは、満杯になった後のトランザクションの実行時に発生します(ログが満杯の状態では、それ以上トランザクションを実行することができません)。したがって、ログが満杯にならないようにトランザクション ログを管理しておくことは、SQL Server を利用する上で必須の作業になります。 トランザクション ログの肥大化を防止するには、次の 2つの方法があります。 トランザクション ログを定期的にバックアップする 復旧モデルを「単純」

    SQL Server でのトランザクション ログが満杯の場合のエラー - matu_tak’s blog
  • SQL Server の使用しているポート番号 - matu_tak’s blog

    SQL Server の使用しているポート番号は、以下に一覧されています。 http://msdn.microsoft.com/ja-jp/library/cc646023.aspx 既定のインスタンスは、デフォルトで TCP 1433 ポート。 名前付きインスタンスの場合は、動的ポートが設定されて、クライアントからの要求は SQL Server Browser サービスが処理します。このときに利用するポートが UDP 1434 です(動的ポートの問い合わせ)。動的ポートのポート番号は、構成マネージャで「SQL Server ネットワークの構成」で「TCP/IP」プロトコルのプロパティを開いて確認できます。SQL Server 2000 の場合は、サーバー ネットワーク ユーティリティから確認できます。 データベース ミラーリングを構成している場合は、エンドポイントのリスナーポートを利用し

    SQL Server の使用しているポート番号 - matu_tak’s blog
  • SQL Server 2008 のシステム データベースの場所 - matu_tak’s blog

    SQL Server 2008 のシステム データベース(master、msdb、model、tempdb)は、既定では次の場所に作成されています。 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA この場所を変更したい場合は、インストール時に行います(後から変更することもできなくはないですが、いろいろと面倒です)。

    SQL Server 2008 のシステム データベースの場所 - matu_tak’s blog
  • SQL Server 2008 でデータ ファイル(.mdf)のアタッチとデタッチ - matu_tak’s blog

    SQL Server 2008 では、CREATE DATABASE .. FOR ATTACH ステートメントを利用して、データベースのアタッチを行うことができます。 USE master go CREATE DATABASE sampleDB ON ( FILENAME = N'C:\sampleDB.mdf' ), ( FILENAME = N'C:\sampleDB_log.LDF' ) FOR ATTACH sp_attach_db システムストアド プロシージャも下位互換のために用意されているので(将来のバージョンでは削除される予定)、次のように実行することもできます。 USE master go EXEC sp_attach_db N'sampleDB' , N'D:\sampleDB.mdf' , N'D:\sampleDB_log.LDF' また、デタッチされた DB

    SQL Server 2008 でデータ ファイル(.mdf)のアタッチとデタッチ - matu_tak’s blog
  • 1