SSブログ

SQL Server 2008 の復旧モデルとトランザクション ログの肥大化

SQL Server のトランザクションログは、復旧モデルによって変化し、完全モデルでは肥大化する

復旧モデルは、
   完全
   一括ログ
   単純
があり、復旧モデルの確認/変更は、データベースのプロパティで実行する
SQLコマンドラインでは、ALTER DATABASE で以下のようにする

   USE master
   ALTER DATABASE [DatabaseName] SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }


完全(Full)モデル(デフォルトの復旧モデル)
   トランザクションログへ、すべての処理履歴を完全に記録する
   このため、障害発生時に、障害が発生した直前まで、あるいは、指定時刻まで、
   データを復旧することができる

一括ログ(Bulk Logged)モデル
   トランザクションログへ記録する処理履歴を最小限に抑える
   一括(bulk:バルク)操作のパフォーマンスを向上を優先する
      インデックスの作成や再構築、
      bcp コマンド、
      BULK INSERT ステートメント、
      Integration Services パッケージ、
      SELECT INTO、
      INSERT INTO など
   このため、障害発生時に、期待通りの復旧ができない可能性がある

単純(Simple)モデル
   チェックポイントが完了するごとに、トランザクションログを切り捨てる
   ログの肥大化を防ぐことができる
   障害発生時に、障害が発生した直前にはデータを復旧できない
   (バックアップを取得した時点までの復旧となる)
   トランザクションログのバックアップもとれない

※ ログの肥大化で、ディスク領域を圧迫している場合、
   完全 から 単純 に切り替えて、バックアップを実行し、ログを切り捨てる

(Windows Server 2008 R2, SQL Server 2008 R2)
 

タグ:SQL

Windowsサーバ Listen port 確認

Windowsのネットワーク・サービスは、特定のTCPやUDPのポートで
リッスン(待ち受け = クライアントからの要求受付)している
どのサービスやプロセスがどのポートを使用しているか netstat で確認できる

----------
C:\>netstat -oan

Active Connections

  Proto  Local Address          Foreign Address        State           PID
       :
       :
  TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING       7052
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       2292
       :
       :
----------
  -a : アクティブなコネクションとリッスンしているポートを表示
  -n : ポート番号を表示
  -o : ポートを使用しているプロセスIDを表示


PID 7052 を タスクマネージャで探してみると、MSSQLSERVER であることが見て取れる

また、ポート番号 1433 は、
ポート番号とサービス名の対応を記述した services ファイル
(%windir%\system32\drivers\etc\services)
を覗いてみると、以下の記述より、SQL-Server であることが分かる

  # <service name>  <port number>/<protocol>  [aliases...]   [#<comment>]
  ms-sql-s         1433/tcp                           #Microsoft-SQL-Server 
 
(Windows 2008 R2, netstat)
 

タグ:network

SQL Server 2008 R2 SSISパッケージで Import/Export を定期実行する

SSISパッケージをウィザードで作成し、SQLエージェントで実行させる。
.csv ファイルのImportのケースについて記述。Exportは、この逆の設定になる。

DTS wizard を起動する
   "C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSWizard.exe"

データソースの選択
  全般ページで、
     データソース = "フラットファイルソース"
     ファイル名 = import する .csv ファイルを選択
     ロケール = "日本語”
     コードページ = 932(shift-JIS)を選択
     形式 = "区切り記号"
     テキスト修飾子 = '"'(ダブルクオテーション)
     ヘッダ行区切り記号 = {CR}{LF}
     スキップするヘッダ行 = 0
     "先頭データを列名として使用する" をチェック
  詳細設定ページで、
     import後の 各列 の 型定義
  [次へ]

変換先の選択
  変換先 = "SQL Server Native Client 10.0"
  サーバ名 = import先のサーバ名
  認証 = "SQL Server 認証を使用する"
         ユーザ名/パスワードを指定する
  データベース = import先のデータベース名
  [次へ]

コピー元のテーブルおよびビューを選択
  変換元 = import する .csv ファイル
  変換先 = import先のテーブル名
  必要に応じて、[マッピングの編集] や [プレビュー] を行う
  [次へ]

パッケージの保尊および実行
  "すぐに実行する" をチェック
  "SSISパッケージを保存する" をチェック
     "ファイルシステム" を選択
     (SQL Server内に保存すると、転用ができずメンテナンス性も悪くなる)
     "パッケージの保護レベル" は "すべてのデータをパスワードで暗号化する"
     パスワードを設定する
  [次へ]

SSISパッケージの保存
  名前/説明 = 任意の名前、説明を設定
  ファイル名 = SSISパッケージの出力先のパスを指定
               (D:\ssis\CsvImport.dtsx など)
  [次へ]

ウィザードの完了
  設定内容の一覧を確認し [完了] とすると、
  .dtsx ファイルが出力され、データ import が実施される


SQL Server Management Studio で job を構成する

SQL Serverエージェント > ジョブ を右クリックして "新しいジョブ" を開く
  全般ページ
     名前 = 任意の名前を指定
     説明 = 必要により記述

  ステップ ページ
     ※import先のテーブルに既にデータがある場合 trancate する(つまりdelete&insert)
     新規作成
        ステップ名 = 任意の名前を指定(RunDeleteなど)
        種類 = Transact-SQLスクリプト(T-SQL)
        データベース = import先のデータベース名
        コマンド = USE [DBname]
                   GO
                   Truncate Table [dbo].[TableName];
        [OK]
     新規作成
        ステップ名 = 任意の名前を指定(RunSSISpkgなど)
        種類 = SQL Server Integration Service パッケージ
        パッケージソース = ファイルシステム
        パッケージ = 作成したSSISパッケージのパスを指定
        [OK]
        設定したパッケージのパスワードを聞かれるので入力する

  スケジュールページ
     定期実行するスケジュールを設定する
     [OK]
 
(Windows Server 2008 R2, SQL Server 2008 R2, SSIS, DTS) 
 

タグ:SQL SSIS

Access起動時にSQL serverとのODBC接続を自動更新させる

ODBC接続を行うVBAモジュールを作成し、これをAccess2010のマクロ "AutoExec" からcallする

AccessDB.accdb を開き、
作成 > 標準モジュール > VBA の Module1 編集画面で、
VBA のコード(ex. RefreshODBCLink) を記述する

作成 > マクロ > マクロ作成画面で 、
"プロシージャの実行" を選択し、"プロシージャ名" で RefreshODBClink() を入力 > [保存] >
マクロ名を "AutoExec" として保存する


VBAモジュールの例:
----------
Function RefreshODBClink()
    Dim Dbs As DAO.Database
    Dim Tdf As DAO.TableDef
    Dim strODBC As String

    Set Dbs = CurrentDb
    strODBC = "ODBC;DRIVER=SQL Server;UID=uid;PWD=password;LANGUAGE=日本語;DATABASE=dbname;SERVER=servername;"

    ' ODBCLink の再接続
    For Each Tdf In Dbs.TableDefs
        If Tdf.Connect Like "ODBC;*" Then
            Debug.Print "Set Tdf Connect:" & Tdf.Name & ":" & strODBC
            Tdf.Connect = strODBC
            Tdf.RefreshLink
            Tdf.Fields.Refresh
        End If
        DoEvents
    Next Tdf
    Dbs.TableDefs.Refresh

End Function
----------
 
ODBCリンクを作成するVBA
 
(Windows7, SQL Server 2008 R2, ODBC, Access 2010)
 

ODBCリンクを作成するVBA


タグ:SQL ODBC access

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。