SSブログ
前の10件 | -

INSTEAD OF トリガ(SQL Server) [SQL]

INSTEAD OF トリガ(SQL Server)

        INSTEAD OF トリガを使用する主な利点は、更新可能ではなかったビューを更新できるようになること。
        複数のベース テーブルに基づいたビューでは、INSTEAD OF トリガを使用して、複数のテーブルの
        データを参照する挿入、更新、および削除の各操作をサポートする必要がある。
        INSTEAD OF トリガのもう 1 つの利点は、バッチの一部を拒否しながらバッチのその他の部分を正常に実行できる
        ロジックをコード化できること。

    INSTEAD OF トリガを使用すると、次のような操作を実行できる。

        * バッチの一部を無視する。
        * バッチの一部の処理および問題のある行のログ記録を実行しない。
        * エラー状態が検出された場合、代替操作を実行する。

SET IDENTITY_INSERT(SQL Server) [SQL]

SET IDENTITY_INSERT(SQL Server)

    通常、IDENTITY列はID値を明示的に追加できないが
    SET IDENTITY_INSERTをONにすると追加できるようになる。

    IDENTITY_INSERTをONにできるのは、セッション内の
    一つのテーブルのみなので、追加をしたらOFFにするのを忘れない事。

    (例)
        SET IDENTITY_INSERT TEST ON

sp_helpdb(SQL Server) [SQL]

sp_helpdb(SQL Server)

    指定されたデータベース、または全てのデータベースに
    関する情報を返す。

データベースファイル(SQL Server) [SQL]

データベースファイル(SQL Server)

    SQL Server2005のデータベースには3種類のファイルがある。

    ・プライマリデータファイル
        プライマリデータファイルはデータベースの開始点であり
        データベースの内の他のファイルを指し示す。
        各データベースには1つのプライマリデータファイルがある。
        プライマリデータファイルに推奨されるファイル名拡張子は.mdf

    ・セカンダリデータファイル
        セカンダリデータファイルはプライマリデータファイル以外の
        すべてのデータファイルで構成される。データベースによっては
        セカンダリデータファイルがない場合と、複数のセカンダリデータファイルが
        ある。セカンダリファイルに推奨されるファイル名拡張子は.ndf

    ・ログファイル
        ログファイルはデータベースの復旧に使用する全てのログ情報が格納される。
        1つのデータベースには最低、1つのログファイルが必要で複数あっても大丈夫。
        ログファイルに推奨されるファイル名拡張子は.ldf

SET ARITHABORT(SQL Server) [SQL]

SET ARITHABORT

    SET ARITHABORT{ON | OFF}

    クエリ実行中にオーバーフローまたは、0除算のエラーが
    発生した場合に、クエリを終了する。

    SET ARITHABORTをONにし、SET ANSI_WARNININGSもONにした場合、このエラー状態が
    発生するとクエリが終了する。SET ARITHABORTをONにし、SET ANSI_WARNINGSをOFFに
    した場合、エラー状態が発生するとバッチが終了する。エラーがトランザクション内で
    発生した場合、トランザクションはロールバックされる。SET ARITHABORTがOFFの場合に
    エラーが発生すると、警告が表示され算術演算の結果には、NULLが割り当てられる。

    (例)
    SET ANSI_WARNINGS OFF
    SET ARITHABORT ON

    SELECT * FROM T1
    --結果
    --        A           B
    --1        1         0
    --2        255      1

    SELECT A/B AS AB FROM T1
    --結果は何も表示されない

    SET ARITHABORT OFF
    
    SELECT A/B AS AB FROM T1

    --結果
    --        AB
    --1        NULL
    --2        255

タグ:SQL

SET QUOTED_IDENTIFIER (SQL Server) [SQL]

SET QUOTED_IDENTIFIER (SQL Server)

    SET QUOTED_IDENTIFIER{ON | OFF}

    SET QUOTED_IDENTIFIER ON の場合、識別子を二重引用符で区切る事が出来る。
    リテラルは単一引用符で区切る必要がある。

    SET QUOTED_IDENTIFIER ONの場合、二重引用符で区切られた文字列は、全て
    オブジェクト識別子として解釈されるので予約済みキーワードを使用できる。

    それに対してOFFの場合、識別子は規則に従わなければならないが
    リテラル文字は単一・二重引用符のどちらで区切ってもよい。

    (例)
    SET QUOTED_IDENTIFIER ON
    GO
    
    --成功
    CREATE TABLE "SELECT"
    (
        "identity"    int    IDENTITY
        "ORDER"     int
    )
    GO
    DROP TABLE "SELECT"
    GO

    SET QUOTED_IDENTIFIER OFF
    GO
    --失敗
    CREATE TABLE "SELECT"
    (
        "identity"    int    IDENTITY
        "ORDER"     int
    )
       

TDS(表形式データストリーム)(SQL Server)

TDS(表形式データストリーム)(SQL Server)

    SQL Serverデータベースエンジンはアプリケーションと通信する際、通信を
    表形式データストリームと呼ばれるMicrosoftの通信形式にフォーマットしている

DONE_IN_PROCメッセージ(SQL Server) [SQL]

DONE_IN_PROCメッセージ(SQL Server)

    ストアドプロシージャに複数のステートメントがある場合、SQL Serverは既定で
    各ステートメントの完了時にクライアントアプリケーションにメッセージを送り
    ステートメントが処理された行数を知らせている。

    これをTDS用語でDONE_IN_PROCメッセージと呼んでいる。

    DONE_IN_PROCメッセージを必要としているアプリケーションはあまりない

SET NOCOUNT [SQL]

SET NOCOUNT(SQL Server)

     SET NOCOUNT{ON | OFF}

    ストアドプロシージャなどで処理された行数を示す
    メッセージが結果セットの一部として返されないようにする。


    SET NOCOUNTをONにするとDONE_IN_PROCメッセージはクライアントに送信されなくなる。
    この為、実際に返すデータが少量のステートメントなどは、ネットワーク通信量が
    大きく減少するのでパフォーマンスが大きく向上する。


ADPでコントロールソースがうまく反映されない時


    ADPでストアドプロシージャをレコードソースにして、フォーム・レポートを
    作成した時にコントロールソースの一覧にうまく反映されない場合。

    ストアドプロシージャに以下の部分を追加する。

    CREATE PROCEDURE usp_TEST
                    @P_PARA        AS varchar(5)
    AS

    SET NOCOUNT ON
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    GOTO SKIP
        SELECT
            'DUMMY'        AS FIELD1
            'DUMMY'        AS FIELD2
    SKIP:

    GOTO SKIP とSKIP:の間のSELECT句に画面やレポートで
    使用したいフィールドを追加する事。

タグ:access
前の10件 | -

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