MSDE_MAN.exe Help

  MSDE_MAN.exe

  MSDE_MAN.exe ver 1.1.10
  「MSDE2000 or SQL Server 2000」向けの簡易的な管理Toolです。

    ■ 特徴
        ・データベースの作成からテーブル、ストアドプロシージャーの作成まで
          主なデータベース構成の変更作業をGUIでサポートする。
           ※ 簡単な構成なら「Transact-SQL」の構文を知らなくても設定できます。
        ・SQL文の発行及び、基本的な構文の発行を容易にする支援機能「Easy SQL」を
          搭載しています。
        ・発行したSQL文は履歴保持し、SQL文の再利用が容易です。
        ・面倒なバックアップの設定などを一括で行う設定支援ウィザード機能。
        ・指定されたデータ-ベースのテーブルの仕様をExcel形式で出力できます。

    ■ 動作環境
      Windows2000/XP及び、MSDE2000がインストールされているPC
        ・一部の機能ではSQL-DMO(SQL Distributed Management Objects)を使用しています
          ので、MSDE2000 or SQL Server クライアントのインストールを推奨します。
            ※　インストールされてない場合には機能を制約されます。
        ・Tableの構造操作やオブジェクトのスクリプト生成機能以外は、ADO(Active-X
           Data Object)を使用していますので、ADOだけでもインストールされていれば
          ある程度の機能は使用できますが、全機能の動作は保証いたしません。
        ・Windows9x/NT/2003に付きましては試験環境を準備できない為、正式には
          サポートいたしませんが、おそらく殆ど動くでしょう。

    ■ 登録商標
      以下の単語はMicrosoft社の登録商標だと思います。　(C)を省略してありますが、
      付いているかのように読みください。
        ・Microsoft
        ・Microsoft SQL Server 2000 Desktop Engine
        ・MSDE
        ・Microsoft Excel
        ・Windows2000, Windows XP, Windows NT, Windows 2003
        ・SQL Distributed Management Objects
        ・SQL-DMO
        ・Active-X Data Object

powered by ACURA Tools.


  MSDE_MAN.exe

    ■ インストール方法
      MSDE_MAN.exe などのファイル一式を好きなフォルダに置いて、実行してください。
      なお、実行ディレクトリに設定ファイル及び作業ファイルを書き込みますので、
      実行ディレクトリに書込み権限があるユーザーでの実行をお願いします。

    ■ アン・インストール方法
      また、レジストリは何も操作しませんので、不要になりましたら、インストール時に
      展開したファイル一式を削除して頂ければアンインストールできます。
      作業ファイルや、設定ファイルを生成しますので、ディレクトリごとの削除を
      お勧めします。


  MSDE_MAN.exe

    ■ 基本画面

      MSDE_MAN.exeの操作方法はシンプルな操作が基本です。
      ①のTreeViewで操作対象を選択すると、
      ②のListViewに対象がリスト表示されます。
         ※ その際のSQL-Serverに対するコマンドが③のステータスバーに表示される。
      ④操作したい対象を選択し、右クリックでポップアップメニューを表示する。
      ⑤操作コマンドを選択し、実行する。


  MSDE_MAN.exe

    ■ SQL発行画面

    １、基本操作
      1)①のMemoに発行したいSQL文を入力します。
      2)SQL文の発行
        a)結果セットを返すSQL文の場合は
          ②のOpenボタン押す。
          ④のDB-Gridに結果セットが表示される。
          選択件数を確認したい場合には、⑤のCountボタンを押すと、キャプションに件数が表示される。
        b)更新系や、create系のSQL文の場合は
          ③のExecボタンを押す。

    ２、EasySQLの使用（select系SQLの作成例）
      1)メインのListViewでTableを選択しておく。
      2)⑥のEasySQLボタンを押すと、右側のEasySQLパネルが表示される。
      3)⑦のレイアウト取得ボタンを押すと、⑧のCheckListBoxにフィールドの一覧が表示される。
      4)⑧より表示したいフィールドをチェックする。
      5)⑨のボタンエリアの「<<項目」ボタンを押す
      6)⑨のボタンエリアの「クリア>>項目」ボタンを押す
      7)⑧より検索条件にしたいフィールドをチェックする。
      8)⑨のボタンエリアの「<<条件」ボタンを押す
      9)①のMemoエリアのSQL文を最後に修正する。


  MSDE_MAN.exe

    ■ Tableの設定画面
      Tableの設定画面では、設定を確認／修正できます。
      新規にTableを作成することも出来ますが、実際にはSQL構文を作っておいて、
      一気に作るほうが一般的でしょう。
      例はこちらの「トレーニング用のTableの作成」をご参照ください。

    １、基本操作(新規作成の場合)
      1)①のTable名に作成したいTableの名前を入力します。
      2)②の「新規」ボタンを押します。
      3)③のフィールドの各種情報を入力します。
        ・列名
        ・データ型（データ型の種類によっては桁や精度の入力が必要です）
        ・Null可否
        ・規定値（データ型によってはIdentifyが使用できます...Autonumber型/Sequenceみたいなもの）
        ・説明
      4)④の「登録」ボタンを押すと、⑤のListViewにフィールドの定義が登録されます。
      5)以上の2)～4)の作業を繰り返します。
      6)最後に⑥の「新規作成」ボタンを押すと、Tableが作成されます。

       ※ Tableの作成後でないと、IndexやTrigerは設定できません。
       ※ FieldのサイズなどはTableの作成後でも変更できますが、データ型などは変更できません。


  MSDE_MAN.exe

    ■ Tableの設定画面

    ２、Indexの設定
      1)①の「新規」ボタンを押します。
      2)②の「Index名」に作成したいIndexの名前を入力します。
         ※ ここで使用するIndex名にはあらかじめ命名規則を設けておくことをお勧めします。
      3)③でIndex/Keyの対象フィールドを選択します。
      4)④の「<<」ボタンで登録すると、⑤のListViewに表示されます。
      5)⑥でIndex/Keyの属性を指定します。
      6)⑦の「登録」ボタンを押すとIndex/Keyが生成され、⑧のListViewに表示されます。


  MSDE_MAN.exe

    ■ SQL Serverへの接続
    １、SQL Serverへの接続ダイアログの表示

      1)①のメイン画面の左側にあるTreeViewのトップを選択し、そのまま右クリックします。
      2)メニューが表示されますので、②の「接続 ...」を選択します。

    ２、SQL Serverへ接続

      1)①のコンボボックスに接続したいSQL Serverのコンピューター名を入力します。
        MSDE_MAN.exeを実行しているコンピューターの場合には「(local)」のままでOKです。
      2)ログイン情報を入力します。
        a)SQL Server認証の場合
          ログイン名と、パスワードを②、③に入力します。
        b)Windows認証の場合
          ④をチェックします。　ログイン名として現在のユーザー名が自動で入力されます。
      3)⑤の「OK」ボタンを押します。

    ３、補足
      MSDEはデフォルトでのインストール状態では、ネットワーク経由での接続が出来ません。
      C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SVRNETCN.exeを起動し、
      使用するプロトコルを有効にして下さい。


  MSDE_MAN.exe

    ■ データベース作成
    １、Database設定ダイアログの表示
      1)メイン画面の左側にあるTreeViewで「Database」を選択する。
      2)ListView中のどこでも良いので右クリックし、メニューが表示されますので、
        「新規データ-ベース ...」を選択します。

    ２、データベースの作成

      1)①の「名前」に作成するデータベースの名前を入力します。
      2)②の「データファイルに」データファイルの名前を入力しますが、右側の「...」ボタンで
        フォルダーを指定すると、自動的にファイル名が補完されます。
      3)③で必要な各種情報を設定します。
         ※ 基本的には格納するがデータの量が多い場合だけ初期サイズを変更すれば良いと思います。
      4)④の「ログファイルに」ログファイルの名前を入力しますが、右側の「...」ボタンで
        フォルダーを指定すると、自動的にファイル名が補完されます。
      5)③で必要な各種情報を設定します。
         ※ 基本的には格納するがデータの量が多い場合だけ初期サイズを変更すれば良いと思います。
      6)⑥の「OK」でデータベースの作成が完了します。

use master
create database Training
    on(name       = Training_dat,
       filename   = 'D:\MsSQL\Data\Trainingdat.mdf',
       size       = 10,
       filegrowth = 10 %)
log on(name       = 'Training_log',
       filename   = 'D:\MsSQL\Log\Traininglog.ldf',
       size       = 5,
       filegrowth = 10 %)


  MSDE_MAN.exe

    ■ ログイン作成
      ・ログインの作成にあたっては、SQL Server ログインか、Windows認証を使用するか
        をまず決めておく必要があります。
          a)SQL Server ログイン：
            SQL Server 内部にユーザー名と、パスワードを保持します。
            仕組みとしてはシンプルですが、定期的なパスワード変更や、組織変更等際の運用は面倒です。
          b)Windows認証：
            Windows Networkでの認証結果を利用します。
            定期的なパスワードの変更も自動的に行なうように設定できますし、Groupなどを利用すれば、
            Windowsファイルサーバーなどの組織情報を利用したセキュリティ制御も可能です。
            DBAの立場としては面倒かもしれませんが、上手く運用すれば楽もできます。
       ・結論としては、
        小規模、部門の数が少い、シンプルで良い場合は、「SQL Server ログイン」
        規模が大きい or 他部門にまたがっている or 複雑なアクセス制御パターンが必要な場合には
        Windows認証の方が運用しやすいでしょう。
        （既にDomainによるグループ分けがきちんと行なわれている場合にはWindows認証がお勧めです）

    １、新規ログインダイアログの表示
      1)メイン画面の左側にあるTreeViewで「Security」->「Login」を選択する。
      2)ListView中のどこでも良いので右クリックし、メニューが表示されますので、
        「新規ログイン ...」を選択します。

    ２、新規ログインの作成

      1)①の「loginname」に作成するログインの名前を入力します。
         ※ Windows認証では、「Domname\winlogin」や「PcName\winlogin」形式になります。
      2)②の「passwd」には使用するパスワードを入力します。
         ※ Windows認証では、パスワードの入力は不要です。
      3)③の「適用」を押すとログインが作成されます。

      ※ Windows認証でログインを作成する場合には、あらかじめWindowsネットワーク上に
          アカウントを作成し、④のチェックボックスをOnにして、①のみ入力してください。

use Training
execute sp_addlogin @loginame = 'TEST_User', @passwd = 'TEST'
execute sp_grantlogin @loginame = 'DomName\loginName'


  MSDE_MAN.exe

    ■ DBユーザーの作成
      個別のデータベース毎に、アクセスを許可するログインを指定します。
      これを行なっておかないと、データベースへのアクセスは拒否されます。
      アクセス権を付与する権限を階層的に分けるための手続きって感じですね。

    １、新規ユーザーダイアログの表示
      1)メイン画面の左側にあるTreeViewでアクセスを許可したいDatabaseの「User」を選択する。
      2)ListView中のどこでも良いので右クリックし、メニューが表示されますので、
        「新規ユーザー ...」を選択します。

    ２、新規ユーザーの作成

      1)①にはアクセス許可をするDatabase名が表示されます。
      2)②の「Login」から許可したいログインを選択します。
      3)③の「OK」を押すとユーザーが作成されます。

use Training
execute sp_grantdbaccess @loginame = 'TEST_User'


  MSDE_MAN.exe

    ■ ロールの使用
      ・ロールはグループに相当するものとお考え下さい。　個人毎のログインに対して、各オブジェクトの
        アクセス許否の設定をするより、効率良く設定することが出来ます。
      ・また既にシステムで用意されているロールを活用することで、さらに設定が簡単になります。

      ・基本的な考え方
        システムで用意されているロールを利用する。　システムで用意されているロールでは制御が難しい
        場合のみ、新規でロールを作成する。
          主なシステムで用意されているロール：
            1)db_securityadmin ... アクセス許否の設定が出来る
            2)db_ddladmin ........ オブジェクトを編集できる
            3)db_datareader ...... データを読める
            4)db_datawriter ...... データを書ける

    １、Roleの設定ダイアログの表示
      1)メイン画面の左側にあるTreeViewで操作をしたいデータベースの「Role」を選択する。
      2)既にあるRoleの操作をする場合は、ListView中の操作したいロール①を選択し、「プロパティ」、
        新規の場合はどこでも良いので右クリックし、「新規ロール...」を選択します。

    ２、Roleの設定

      1)新規にロールを作る場合には②の「Role」に作成するロールの名前を入力します。
      2)③のListViewにこのデータベースに対してアクセス許可がなされたユーザーが表示されます
        ので選択します。
      3)④で参加させるか否かを選択します。
      4)⑤の「適用」ボタンで設定されます。

use Training
execute sp_addrolemember @rolename = 'db_datareader', @membername = 'TEST_User'
execute sp_addrole @rolename = 'TEST_Role'
execute sp_addrolemember @rolename = 'TEST_Role', @membername = 'TEST_User'


  MSDE_MAN.exe

    ■ 権限の設定
        権限の設定のポイントはいかに設定個所を少なくするか？　です。
        設定個所の増大はミスや、保守の手間を増やすからです。
        私のやり方では、「db_datareader」や「db_datawriter」を与えておいて、
        検索や、操作されてはいけない個所のみ「Deny」の設定をするようにしています。

    １、権限の設定ダイアログの表示
      1)メイン画面の左側にあるTreeViewで操作をしたいデータベースの「Table」、「View」、
        「Procedure」のいずれかを選択する。
      2)操作したいものをListView中とり選択し、右クリックする。
      3)「権限の表示...」を選択します。

    ２、権限の設定

      1)①のListView中から操作したいユーザーやロールを選択します。
      2)②でアクセス許否のパターンを設定します。
          Permit:許可
          Deny:不許可
          None:指定なし（既定の設定やロールに依存する）
      3)③の「適用」ボタンで設定されます。

use Training
deny all on Tbl_DENY to 'TEST_Role'


  MSDE_MAN.exe

    ■ ジョブ
      ・ジョブは指定時間や一定時間毎のサイクルなどで指定したコマンドを自動的に実行し、
        成功／失敗などの情報を保持するものです。
      ・また、ステップの概念を持ち、一部のステップの失敗によって処理を終了させるか、あるいは
        継続するかを選択できるなど、バッチ的な処理を行なう際には非常に便利なものになっています。

    ０、例題
      設定操作の例として、特定のTableに対するアーカイブ処理のジョブを作成します。

    １、Jobの設定ダイアログの表示
      1)メイン画面の左側にあるTreeViewで「Management」->「Job」を選択する。
      2)ListView中のどこでも良いので右クリックし、「新規ジョブ...」を選択します。

    ２、Jobの設定

      1)①の「Job name」に作成するジョブの名前を入力します。
        ※ バッチ処理は処理順などが問題になるケースがあります。　事前に管理シート、命名規則を
            準備しておいた方が良いでしょう。
      2)②の「説明」に説明を入力します。
      3)③の「新規作成」ボタンで新規にJobが定義され、Job Step、Job Schedule設定などが
        行えるようになります。

    ３、Job Stepの設定

      1)①の「Job Step」をクリックします。
      2)②の「新規」をクリックします。
      3)③の各アイテムを設定します。（今回の設定例は下表を参照の事）
      4)④の「更新」ボタンで登録され、
      5)⑤のListViewに表示されます。
id 1 | step_name | BCPによるエクスポート
 | subsystem | CMDEXEC
 | 成功時動作 | 次のステップへ進む
 | 失敗時動作 | 失敗をレポートして、、ジョブを終了する
 | command | bcp "Trainig..Tbl_TEST" out "D:\Mssql\Archive\Tbl_TEST[DATE].txt" -c -q -U"xx" -P"*****"
id 2 | step_name | 有効期限切れレコードの削除(90日以前のレコード)
 | subsystem | TSQL
 | 成功時動作 | 成功をレポートして、ジョブを終了する
 | 失敗時動作 | 失敗をレポートして、ジョブを終了する
 | command | delete from Trainig..Tbl_TEST where dCreate < now()-90
※ [DATE]の部分はトークンで、YYYYMMDD形式の文字列に実行時に置換えされる。

    ４、Job Scheduleの設定

      1)①の「Job Schedule」をクリックします。
      2)②の「新規」をクリックします。
      3)③の各アイテムを設定します。（今回の設定例は下表を参照の事）
      4)④の「更新」ボタンで登録され、
      5)⑤のListViewに表示されます。
      以上で、Jobの作成は完了ですが、投入を行なわないと、実際には実行されません。
Schedule_name | 毎月１日の早朝実施
freq_type | 16:毎月の指定日付、１日

    ５、Jobの投入

      1)メイン画面のJobのListView中から対象のJobを選択します。①
      2)右クリックし、②の「ジョブの投入」をクリックします。
      3)ジョブがスケジュールされると、③の「次回実行日時」がセットされます。

use msdb
execute sp_add_job @job_name    = 'TEST_Job',
                   @enabled     = 1,
                   @description = 'Trainig..Tbl_TESTの月毎アーカイブ処理',
                   @owner_login_name =  'sa'
execute sp_add_jobstep @job_name            = 'TEST_Job',
                       @step_name           = 'BCPによるエクスポート',
                       @subsystem           = 'CMDEXEC',
                       @command             =
'bcp "Trainig..Tbl_TEST" out "D:\Mssql\Archive\Tbl_TEST[DATE].txt" -c -q -U"xx" -P"*****"',
                       @on_success_action   = 3,
                       @on_fail_action      = 2
execute sp_add_jobstep @job_name            = 'TEST_Job',
                       @step_name           = '有効期限切れレコードの削除(90日以前のレコード)',
                       @subsystem           = 'TSQL',
                       @command             =
'delete from Trainig..Tbl_TEST
 where dCreate < now()-90',
                       @on_success_action   = 1,
                       @on_fail_action      = 2
execute sp_add_jobschedule @job_name            = 'TEST_Job',
                           @name                = '毎月１日の早朝実施',
                           @enabled             = 1,
                           @freq_type           = 16,
                           @freq_interval       = 1,
                           @freq_subday_type    = 1,
                           @active_start_date   = 20040601,
                           @active_start_time   = 003000
execute sp_add_jobserver @job_name = 'TEST_Job'


  MSDE_MAN.exe

    ■ バックアップ
      ・バックアップは非常に奥が深い問題です。　障害や、誤操作発生時にどの時点にまで
        戻せるようにするのか？　というバックアップ戦略の立案が最初のステップです。
      ・SQL Serverでは様々なバックアップの形態にあわせた設定を行うことが出来ますが、
        小規模のシステムの場合、深夜／早朝などの接続ユーザーが少ない時間帯に
        毎日バックアップするという程度で十分でしょう。

    １、手動で設定する際の手順
      1)メイン画面の左側にあるTreeViewで「Management」->「BackUpDevice」を選択する。
      2)ListView中のどこでも良いので右クリックし、「新規バックアップデバイス...」を選択します。

      3)名前と、バックアップファイル名を指定して、バックアップデバイスを作成する。
        これを各DB毎に繰返す。　また、曜日でメディアを変えたい場合にはDB x 曜日分繰返す
      4)ジョブをこちらの手順で作成する。
        コマンドは下表のようなバックアップコマンドを発行する。
backup database Training to BKM_DAY_Training
        with format,
             description = 'Training Daily',
             name='BKM_DAY_Training'

    ２、設定ウィザードを使用するケース
      結構面倒なので、設定ウィザードで一括にバックアップ用のメディア・ジョブを設定する
      機能を用意してあります。
      1)メイン画面の左側にあるTreeViewで「Config」を選択する。
      2)ListView中の「WIZ_BK01」または「WIZ_BK02」を選択し、右クリックし、
        「設定支援ウィザード実行」を選択します。

      3)バックアップ先のフォルダーの指定ダイアログが表示されるので、指定すれば
        バックアップデバイス、ジョブが自動生成される。
      4)時間などを微調整し、ジョブを投入すればOK。
        ジョブが投入されていると、「次回実行日時」が表示される。

         ※ SQL Server Agent Serviceが起動していないとNG

use master
execute sp_addumpdevice @devtype      = 'disk',
                        @logicalname  = 'BKM_DAY_Training',
                        @physicalname = 'D:\MsSQL\Backup\BKM_DAY_Training.bak'
commit
use msdb
execute sp_add_job @job_name    = 'Job_Bkup_DAY_Training',
                   @enabled     = 1,
                   @description = 'デイリー・バックアップ用(同一メディアの毎日書換え)',
                   @owner_login_name =  'sa'
execute sp_add_jobstep @job_name            = 'Job_Bkup_DAY_Training',
                       @step_name           = 'BkUp_Training',
                       @subsystem           = 'TSQL',
                       @command             =
'backup database Training to BKM_DAY_Training
   with format,
        description = ''Training Daily'',
        name=''BKM_DAY_Training''',
                       @on_success_action   = 1,
                       @on_fail_action      = 2
execute sp_add_jobschedule @job_name            = 'Job_Bkup_DAY_Training',
                           @name                = 'Sch_Bk_DAY',
                           @enabled             = 1,
                           @freq_type           = 4,
                           @freq_interval       = 1,
                           @freq_subday_type    = 1,
                           @active_start_date   = 20040601,
                           @active_start_time   = 234500
execute sp_add_jobserver @job_name = 'Job_Bkup_DAY_Training'


  MSDE_MAN.exe

    ■ レストア
      ・レストアは非常にデリケートな作業です。　行なわずに済めば最高ですが、
        保証が有る話ではありませんので、障害を想定し、準備することは重要です。
        ここでは簡単な例で説明をします。

    ０、想定
      ・データベースが全損した。
      ・昨日の深夜行なわれたデイリー・バックアップ・ファイルは無事であった。
      ・どうにもならないので、全て昨日の深夜の状態に戻してかまわない。
         ※ 実際にはこんな都合の良いことは少ないでしょうが、操作のガイドなので
            このくらいでご勘弁を ... HELPを一通り作り終わったらちょっと考えます。

    １、レストア・ダイアログの表示

      1)①メイン画面の左側にあるTreeViewで「操作対象のデータベース」->「Backup」を選択する。
      2)ListViewに表示されているメディアから適当なものを選択します。②
      3)右クリックして③の「レストア実行」を選択します。

    ２、レストア実施

      ①の「OK」を押せばレストアが実施されます。

       ※ ユーザーが使用中などの場合には、メイン画面の左側にあるTreeViewで
          「Database」を選択し、対象のデータベースを選択して、右クリックして
          「OnLine」->「管理者専用」などとすれば良いと思います。


  MSDE_MAN.exe

    ■ SQL文セットの発行
      SQL文セットは、定型的な一連の操作を一まとめのファイルにして、SQL発行画面に
      ドラッグ＆ドロップして操作の簡便化を図るものです。
      プログラムの開発時など、何度も同じ操作をしたい場合などに便利です。

    １、SQL文セットのフォーマット
      SQL文セットは通常のテキストファイルで、
      「/* COMnn:xxxxxxxxxxxxxxxxxx */」形式のデリミタ行によって区切られたSQL文の集合体です。
        nn部：ゼロ詰二桁の整数で、表示順番を指定します。
        xx部：説明文字列です。　コンボボックスに表示され、ユーザーに選択させやすくします。
  SQL文セット・ファイルの例　　（赤太文字がデリミタ行です）
/* COM01:TEST用のSQL文-001(データの追加)        */
begin
    insert into TEST_M1(A,C,D) values('AMPM', 12,'2001/08/15')
    insert into TEST_M1(A,C,D) values('CMCD', 32,'2001/08/15')
    commit       /* トランザクションを完結させる */
end

/* COM02:TEST用のSQL文-002                      */
select * from TEST_M1

    ２、SQL文セットの利用例

      1)SQL発行画面を表示させる。
      2)あらかじめ作成した「SQL文セット」をドラッグ＆ドロップする。
         ※ トレーニング用のSQL文セットを「３、SQL文セットの例」に用意してあります。
            参考としてご覧下さい。
      3)①のComboBoxに番号と説明が表示されるので、呼び出したいSQL文を選択する。
      4)②のセットボタンを押す。
      5)③のMemoエリアに選択されたSQL文が呼び出される。

    ３、SQL文セットの例
      お使いになる場合には、下表の内容をメモ帳などに貼り付けて、適当な名前を付けて
      保存してください。　あとはSQL発行画面にドラッグ＆ドロップして下さい。
  トレーニング用SQL文セット・ファイル　　（赤太文字がデリミタ行です）
/* COM01:トレーニング用のデータベースの作成                               */
/***************************************************************************
 *　処　理：トレーニング用のデータベースの作成を行ないます。
 *　操　作：「Exec」ボタンを押してください。
 *　注意点：
 *　　以下の二つのディレクトリを実行前に作成しておいてください。
 *　　又は、ディレクトリの指定をお使いの環境に合せて変更して下さい。
 *　　　D:\MSSQL\Data
 *　　　D:\MSSQL\Log
***************************************************************************/
begin
    use master    -- master DBへ接続
    create database Training
         on(name       = Training_dat,
            filename   = 'D:\MsSQL\Data\Trainingdat.mdf',
            size       = 10,
            filegrowth = 10 %)
     log on(name       = 'Training_log',
            filename   = 'D:\MsSQL\Log\Traininglog.ldf',
            size       = 5,
            filegrowth = 10 %)
    commit
end

/* COM02:トレーニング用のTableの作成                                      */
/***************************************************************************
 *　処　理：トレーニング用のTableの作成を行ないます。
 *　操　作：「Exec」ボタンを押してください。
 *　補　足：
 *　　「execute sp_addextendedproperty」は
 *　　　MSDE_MANやエンタープライズマネージャーの説明に該当する拡張項目です。
 *　　　※ 私はエディターが使用できるので、GUIではなくこの方法を多用してます。
***************************************************************************/
begin
    use Training   -- Training DBへ接続
    create table Tbl_TEST(
      cCtrlNum   char( 10) not null,
      nStepNum   int       not null default(1),
      dCreate    datetime  not null default(getdate()),
      constraint PK_Tbl_TEST
          primary key  clustered(cCtrlNum, nStepNum)
    )
    execute sp_addextendedproperty 'MS_Description', '管理番号'    ,
                         'user', 'dbo', 'table', 'Tbl_TEST', 'column', 'cCtrlNum'
    execute sp_addextendedproperty 'MS_Description', 'ステップ'    ,
                         'user', 'dbo', 'table', 'Tbl_TEST', 'column', 'nStepNum'
    execute sp_addextendedproperty 'MS_Description', '作成日'      ,
                         'user', 'dbo', 'table', 'Tbl_TEST', 'column', 'dCreate'
    create table Tbl_DENY(
      cCtrlNum   char( 10) not null,
    )
    commit
end

/* COM03:トレーニング用のデータの追加                                     */
/***************************************************************************
 *　処　理：トレーニング用のTableにデータの追加を行ないます。
 *　操　作：「Exec」ボタンを押してください。
***************************************************************************/
begin
    use Training   -- Training DBへ接続
    insert into Tbl_TEST(cCtrlNum,nStepNum,dCreate) values('AAM0012',1,'2004/01/01')
    insert into Tbl_TEST(cCtrlNum,nStepNum,dCreate) values('AAM0012',2,'2001/08/15')
    insert into Tbl_TEST(cCtrlNum,nStepNum,dCreate) values('AAM0020',1,'2001/08/15')
    insert into Tbl_TEST(cCtrlNum,nStepNum        ) values('AAM0020',2)
    commit
end

/* COM04:トレーニング用テーブルからの抽出                                 */
/***************************************************************************
 *　処　理：トレーニング用のTableをselectしてみます。
 *　操　作：「Open」ボタンを押してください。
***************************************************************************/
select *
  from Tbl_TEST
 where cCtrlNum like 'AA%'

/* COM05:Transact SQL構文の発行                                           */
/***************************************************************************
 *　処　理：Transact SQL構文を発行します。
 *　操　作：「Open」ボタンを押してください。
 *　概　要：
 *　　Tbl_TESTをフェッチし、nStepNumとdCreateの整合性を確認する。
 *　　nStepNumを昇順で読込み、dCreateの並びと不整合がないか？
 *　戻り値：エラー件数を検出します。
***************************************************************************/
declare @@cCtrlNum     char( 10),
        @@dCreate      datetime ,
        @@cCtrlNum_old char( 10),
        @@dCreate_old  datetime ,
        @@nErrCount    int
declare cur_Tbl_TEST cursor for
              select cCtrlNum,dCreate
                from Tbl_TEST
               order by cCtrlNum, nStepNum
set @@nErrCount = 0                             -- エラーカウンタの初期化
set @@cCtrlNum_old = ''
open cur_Tbl_TEST                               -- カーソルのOpen
fetch next from cur_Tbl_TEST
    into @@cCtrlNum,@@dCreate                   -- 変数へ読込み
while @@FETCH_STATUS = 0 begin                  -- ループ先頭 (RS末までの繰返し)
    if @@cCtrlNum_old = @@cCtrlNum begin
        if @@dCreate_old >= @@dCreate begin
            set @@nErrCount = @@nErrCount + 1   -- エラーカウンタのインクリメント
        end
    end else begin
        set @@cCtrlNum_old = @@cCtrlNum
        set @@dCreate_old  = @@dCreate
    end
    fetch next from cur_Tbl_TEST
        into @@cCtrlNum,@@dCreate               -- 変数へ読込み
end
close cur_Tbl_TEST                              -- カーソルのClose
deallocate cur_Tbl_TEST                         -- カードルの開放
select @@nErrCount as ErrNum

/* COM06:ユーザーのアクセス権限を設定します                               */
/***************************************************************************
 *　処　理：ユーザーのアクセス権限を設定します
 *　操　作：「Exec」ボタンを押してください。
 *　概　要：
 *　　1)ログインを作成します。
 *　　2)作成したログインが「Training」データベースへコネクトできるようにします。
 *　　3)「Training.db_datareader」のロールを与えます。
 *　　　このことにより通常のTableは全て閲覧できます。
 *　　4)新規のロール「TEST_Role」を作成します。
 *　　5)「TEST_Role」に「TEST_User」を参加させます。
 *　　5)「TEST_Role」に対して、テーブル「Tbl_DENY」の閲覧不可の設定を行います。
 *　　　あとで、'TEST_User'でログインして確認してみてください。
***************************************************************************/
begin
    use Training
    execute sp_addlogin      @loginame = 'TEST_User',     @passwd     = 'TEST'
    execute sp_grantdbaccess @loginame = 'TEST_User'
    execute sp_addrolemember @rolename = 'db_datareader', @membername = 'TEST_User'
    execute sp_addrole       @rolename = 'TEST_Role'
    execute sp_addrolemember @rolename = 'TEST_Role', @membername = 'TEST_User'
    deny all on Tbl_DENY to 'TEST_Role'
    commit
end

/* COM07:定期的なバックアップ・ジョブを作成します                         */
/***************************************************************************
 *　処　理：定期的なバックアップ・ジョブを作成します
 *　操　作：「Exec」ボタンを押してください。
 *　概　要：
 *　　1)バックアップ・メディア「BKM_DAY_Training」を作成します
 *　　2)ジョブ「Job_Bkup_DAY_Training」を作成します
 *　　3)ジョブ「Job_Bkup_DAY_Training」にバックアップを行なうステップを追加します。
 *　　4)毎日23:45からバックアップを始めるスケジュールを設定します。
 *　　5)ジョブ「Job_Bkup_DAY_Training」を投入します。
 *　注意点：
 *　　以下のディレクトリを実行前に作成しておいてください。
 *　　又は、ディレクトリの指定をお使いの環境に合せて変更して下さい。
 *　　　D:\MSSQL\Backup
***************************************************************************/
begin
    use master
    execute sp_addumpdevice @devtype      = 'disk',
                            @logicalname  = 'BKM_DAY_Training',
                            @physicalname = 'D:\MsSQL\Backup\BKM_DAY_Training.bak'
    commit
    use msdb
    execute sp_add_job @job_name    = 'Job_Bkup_DAY_Training',
                       @enabled     = 1,
                       @description = 'デイリー・バックアップ用(同一メディアの毎日書換え)',
                       @owner_login_name =  'sa'
    execute sp_add_jobstep
        @job_name            = 'Job_Bkup_DAY_Training',
        @step_name           = 'BkUp_Training',
        @subsystem           = 'TSQL',
        @command             =
'backup database Training to BKM_DAY_Training
        with format,
             description = ''Training Daily'',
             name=''BKM_DAY_Training''',
                           @on_success_action   = 1,
                           @on_fail_action      = 2
    execute sp_add_jobschedule @job_name            = 'Job_Bkup_DAY_Training',
                               @name                = 'Sch_Bk_DAY',
                               @enabled             = 1,
                               @freq_type           = 4,
                               @freq_interval       = 1,
                               @freq_subday_type    = 1,
                               @active_start_date   = 20040601,
                               @active_start_time   = 234500
    execute sp_add_jobserver @job_name = 'Job_Bkup_DAY_Training'
    commit
end

/* COM08:バックアップ＆レストア試験①バックアップ                         */
/***************************************************************************
 *　処　理：バックアップ＆レストア試験としてバックアップを行ないます。
 *　操　作：「Exec」ボタンを押してください。
 *　概　要：
 *　　バックアップ・メディア「BKM_DAY_Training」に「Training」をバックアップします。
 *　注意点：
 *　　バックアップ・メディア「BKM_DAY_Training」は生成済みですか？
***************************************************************************/
use master
backup database Training to BKM_DAY_Training
  with format,
       description = 'Training Daily'  ,
       name        = 'BKM_DAY_Training'

/* COM09:バックアップ＆レストア試験②データの破壊                         */
/***************************************************************************
 *　処　理：バックアップ＆レストア試験としてデータを破壊します。
 *　操　作：「Open」ボタンを押してください。
 *　概　要：
 *　　　　　1)Tbl_TESTのデータを削除します。
 *　　　　　2)確認のための表示します。
 *　　　　　　データがなくなっていることを確認して下さい。
***************************************************************************/
use Training
delete from Tbl_TEST
select * from Training..Tbl_TEST

/* COM10:バックアップ＆レストア試験③データベースの復元   */
/***************************************************************************
 *　処　理：バックアップ＆レストア試験としてデータベースをレストアします。
 *　操　作：「Open」ボタンを押してください。
 *　概　要：
 *　　　　　1)Trainingをレストアします。
 *　　　　　2)確認のため先ほどデータを消したTableを表示します。
 *　　　　　　データが復活したことを確認して下さい。
***************************************************************************/
use master
alter database Training set OFFLINE
restore database Training
   from BKM_DAY_Training
   with replace
use Training
select * from Training..Tbl_TEST


  MSDE_MAN.exe

    ■ TableからのExport
      BCPを利用してTableからデータをテキストファイルに吐き出します。
        1)メイン画面左側のTreeViewで「Table」を選択します。
        2)メニューが表示されるので、「BCP」－「BCPによるエキスポート」を選択します
        3)ファイル選択ダイアログが表示されるのでファイル名を指定してください。
        4)コマンドプロンプト上のBCPによりエキスポートが実行されます。

    ■ TableへのImport
      BCPを利用してテキストファイルからTableにデータをImportします。
      レイアウトが正しくないとインポートが失敗します。
      あらかじめダミーのデータをTableに入力した後、Exportをして
      レイアウトを確認することをお勧めします。
        1)メイン画面左側のTreeViewで「Table」を選択します。
        2)メニューが表示されるので、「BCP」－「BCPによるインポート」を選択します
        3)ファイル選択ダイアログが表示されるのでファイル名を指定してください。
        4)コマンドプロンプト上のBCPによりインポートが実行されます。


  MSDE_MAN.exe

    ■ Table使用容量の調査
      データの増加傾向や、メンテナンス計画の参考資料としてデータ件数を把握することは重要です。
      MSDE_MAN.exeでは下記手順で簡単に把握できます。
        1)メイン画面左側のTreeViewで「Table」を選択します。
        2)メニューが表示されるので、「Table 管理」－「容量調査」を選択します
        3)SQL-DMOを使用していますので、若干遅いのですが、Tableの行数、データサイズ、
          予備サイズ、インデックスサイズが一覧で表示されます。

    ■ Table仕様書の作成
      この機能はExcelを利用しますので、実行にあたりMS Excelがインストールされている必要があります。
        1)メイン画面左側のTreeViewで「Table」を選択します。
        2)メニューが表示されるので、「Table 管理」－「Table定義書の作成」を選択します
        3)Excelが起動され、Table定義書が生成されます。

    ■ Tableの情報管理
      Table及び、Fieldに対する補足の記入をサポートします。
      ですが、この機能はMSDE_MAN.exe独自の拡張機能ですので、SQL Server 付属の
      エンタープライズマネージャーでは記入した内容を確認することは出来ません。
        1)使用開始に当たってはConfigの拡張オプションをOnにして下さい。

        2)このことによって以下のように表示、入力が可能になります。


  MSDE_MAN.exe

    ■ 制作
      MSDE_MANはシェア・ウェアです。
      著作権は、ACURA Tools.(作者)が保有します。
      シェアレジでライセンスキーを入手しますと全機能を制限なく使用できますが、
      試用期間中は幾つかの制限を受けます。
      制限は比較的軽微（RDBMSに対する連続操作の回数制限）ですので、十二分に
      御試用頂けると思います。
      転載は自由に行っていただいて結構ですが、アーカイブの内容を変更しないよう
      にお願いします。

    ■ サポート
      こちらのサイトにて最新版等の情報提供を行ないます。
        http://hp.vector.co.jp/authors/VA038398/

    ■ 免責
      このプログラムを使用して生じた損害等につきましては、作者はいっさい関与し
      ません。使用者の責任で、本プログラムを使用してください。
      また、試用期間中の制限は比較的軽微ですので、十分に試用されてから、
      シェアレジ・ライセンスキーを購入してください。
      特に下記用途での使用はまったく意図されておりません、下記用途での使用は
      行なわないで下さい。
        ・医療機器、原子力機器、航空宇宙機器などの人命に関わる機器及び設備。
        ・高度に信頼性を要求される機器や、設備。


  MSDE_MAN.exe

    ■ ライセンス
      MSDE_MANはシェア・ウェアです。
      ベクター・シェアレジ・サービスでレジストを行なうことにより
      正式に使用することが出来ます。
      シェアレジでライセンスキーを入手して頂けます様お願いします。
        -> Vector シェアレジ送金先 (SR042280)
       ※ 単一ライセンスの場合、シェアレジでの送金のみを受付けます。
       ※ サイト／コーポレートライセンスをご検討される場合にはメールで連絡をお願いします。

    ■ シェアレジ・ライセンスの登録
      1)起動直後のBuil番号などが表示されているListViewで右クリックをします。
      2)メニューが表示されますので「シェアレジ・ライセンスの登録...」を選択します。
      3)表示されたダイアログに以下の情報を入力し、「OK」を押せばOKです。
        ・username　　　：あなたのお名前を入力してください。
        ・ライセンス・キー：Vectorシェアレジ・サービスから送られたキーを入力してください。


  MSDE_MAN.exe

    ■ 変更履歴
      v 1.0.3 2004.04.30 公開開始
      v 1.0.4 2004.05.19 一部修正
           + 一部のバグの修正/GUIの一部見直し
           + readmeの記述内容の変更及びシェアレジの表記を追加
           + Server関連の設定関連のメニューを追加
           + Databaseの圧縮を追加
           + サポート用ホームページの呼び出しメニュー追加
      v 1.1.5 2004.06.15 コマンドファイルのドラッグ＆ドロップ機能追加
           + 一部のバグの修正
           + index情報の取得方法を変更
           + スクリプトファイルのドラッグ＆ドロップへ対応
           + コマンドセットタイプのスクリプトファイルのドラッグ＆ドロップへ対応
           + オンライン・ヘルプの追加(まだ作成途中ですが、公開)
           + Windows 認証でのSQL Server接続許可を追加(sp_grantlogin)
           + Job関連を一部修正
      v 1.1.6 2004.07.06
           + 例外の処理方法を見直し
           + GUIの一部変更
      v 1.1.7 2004.10.02
           + Table, Fieldの補足情報を入力できるように独自拡張
      v 1.1.8 2004.10.25
           + 一部GUI修正
      v 1.1.9 2005.06.26
           + 「-」が入ったユーザー名に対しての権限設定時にエラーがでる不具合修正
                加藤様のご指摘に感謝致します。
      v 1.1.10 2005.09.28
           + 一部の不具合を修正