IIS で Active Server ページを使用して GUID を作成する

この記事では、使用する Active Server Pages (ASP) ページのさまざまな形式の GUID を使用して、いくつかのページ例を作成する方法について説明します。 これらの値を使用して、データベース内の一意のデータ エントリを作成したり、一意のデータ フィールドが必要な他の場所で作成したりできます。

元の製品バージョン:インターネット インフォメーション サービス
元の KB 番号: 320375

注:

これらの例ではセッション変数を使用しないため、これらの例は、セッション状態が無効になっている Web サーバーでも機能します。

単純な時間ベースの GUID を作成する

この例では、現在の年、月、日、時間、分、および秒を使用して、単純な 14 文字の時間ベースの GUID を作成します。 これにより、GUID に基づいてデータを並べ替えることができます。

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "GUID = " & CreateGUID()
    
                Function CreateGUID()
                    Dim tmpTemp
                    tmpTemp = Right(String(4,48) & Year(Now()),4)
                    tmpTemp = tmpTemp & Right(String(4,48) & Month(Now()),2)
                    tmpTemp = tmpTemp & Right(String(4,48) & Day(Now()),2)
                    tmpTemp = tmpTemp & Right(String(4,48) & Hour(Now()),2)
                    tmpTemp = tmpTemp & Right(String(4,48) & Minute(Now()),2)
                    tmpTemp = tmpTemp & Right(String(4,48) & Second(Now()),2)
                    CreateGUID = tmpTemp
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の C:\InetPub\Wwwroot Web サイトのフォルダー) を見つけます。
    3. ファイルにGuidTest0.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 GUID が表示されます。 ページを更新すると、GUID の増分が表示されます。

単純なタイム オフセット GUID を作成する

この例では、2000 年 1 月 1 日の午前 12 時からの秒単位のオフセットを使用して、20 文字の時間ベースの GUID を作成します。 これにより、GUID に基づいてデータを並べ替えることができます。また、ベースとして他の日付を使用するように更新できます。

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "GUID = " & CreateGUID()
    
                Function CreateGUID()
                    Dim tmpTemp1,tmpTemp2
                    tmpTemp1 = Right(String(15,48) & CStr(CLng(DateDiff("s","1/1/2000",Date()))), 15)
                    tmpTemp2 = Right(String(5,48) & CStr(CLng(DateDiff("s","12:00:00 AM",Time()))), 5)
                    CreateGUID = tmpTemp1 & tmpTemp2
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の C:\InetPub\Wwwroot Web サイトのフォルダー) を見つけます。
    3. ファイルにGuidTest1.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 GUID が表示されます。 ページを更新すると、GUID の増分が表示されます。

注:

この例では、関数が同じ秒に 2 回呼び出されない場合にのみ、一意性を許可します。 同じ 2 番目に関数を 2 回呼び出すと、競合が発生します。 コードの関数の使用方法によっては問題が発生しない場合がありますが、同じ 1 秒で発生する一意の値を許可するために、 より一意のタイム オフセット GUID の作成 の例を使用できます。

より一意のタイム オフセット GUID を作成する

この例は、 単純なタイム オフセット GUID の作成 の例と同様に、時間ベースの GUID を作成しますが、長さは 25 文字です。 次の使用例は、2000 年 1 月 1 日の午前 12 時から秒単位でオフセットから 20 文字の値を作成し、その末尾にさらに 5 つの乱数を追加します。 これにより、GUID に基づいてデータを並べ替えることができますが、一意性が大幅に向上します。 これは、ベースとして他の日付を使用するように更新できます。

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "GUID = " & CreateGUID()
    
                Function CreateGUID()
                    Randomize Timer
                    Dim tmpTemp1,tmpTemp2,tmpTemp3
                    tmpTemp1 = Right(String(15,48) & CStr(CLng(DateDiff("s","1/1/2000",Date()))), 15)
                    tmpTemp2 = Right(String(5,48) & CStr(CLng(DateDiff("s","12:00:00 AM",Time()))), 5)
                    tmpTemp3 = Right(String(5,48) & CStr(Int(Rnd(1) * 100000)),5)
                    CreateGUID = tmpTemp1 & tmpTemp2 & tmpTemp3
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の C:\InetPub\Wwwroot Web サイトのフォルダー) を見つけます。
    3. ファイルにGuidTest2.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 GUID が表示されます。 ページを更新すると、GUID インクリメントの最初の 20 文字が表示され、最後の 5 文字はランダムです。

注:

この例と Create a simple time-offset GUID の例は、関数への呼び出しの時間ベースのシリアル化のために CreateGUID 作成されます。 時間に基づいてデータを並べ替える必要がない場合は、「 単純なランダム GUID を作成 する」の例を使用してランダム GUID を作成できます。

単純なランダム GUID を作成する

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "GUID = " & CreateGUID()
    
                Function CreateGUID()
                    Randomize Timer
                    Dim tmpCounter,tmpGUID
                    Const strValid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                    For tmpCounter = 1 To 20
                    tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
                    Next
                    CreateGUID = tmpGUID
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の Web サイトの C:\InetPub\Wwwroot フォルダー) を見つけます。
    3. ファイルにGuidTest3.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 20 文字のランダム GUID が表示されます。 ページを更新すると、値がランダムに変更されます。

注:

この例では、固定長ランダム GUID を作成します。 可変長 GUID を作成するには、可変長 ランダム GUID の作成 の例を使用します。

可変長ランダム GUID を作成する

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "<P>GUID = " & CreateGUID(10)
                Response.Write "<P>GUID = " & CreateGUID(25)
                Response.Write "<P>GUID = " & CreateGUID(50)
    
                Function CreateGUID(tmpLength)
                    Randomize Timer
                    Dim tmpCounter,tmpGUID
                    Const strValid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                    For tmpCounter = 1 To tmpLength
                    tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
                    Next
                    CreateGUID = tmpGUID
                End Function
            %>
    </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の Web サイトの C:\InetPub\Wwwroot フォルダー) を見つけます。
    3. ファイルにGuidTest4.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 10 文字、25 文字、50 文字のランダム GUID が表示されます。 ページを更新すると、値がランダムに変更されます。

注:

この例と「 単純なランダム GUID の作成 」の例では、両方とも連結されたランダム文字の文字列を作成します。 Windows スタイルのランダム GUID の作成の例では、この機能を展開して、Windows GUID のように書式設定された GUID を作成します。

Windows スタイルのランダム GUID を作成する

Windows は主に、コンポーネントやその他のオブジェクトのクラス ID を登録するときに GUID を使用しますが、GUID は何でも使用できます。 Windows GUID は、書式設定された 16 進文字の長い文字列です。つまり、0 から 9 の数字と A から F の文字を使用します (Microsoft Access には、同じ形式の組み込みのレプリケーション ID もあります)。この例では、「 可変長ランダム GUID を作成 する」のコード例に似たコードを使用して、Windows GUID のような GUID を作成する方法を示します。

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "<P>GUID = " & CreateWindowsGUID()
    
                Function CreateWindowsGUID()
                    CreateWindowsGUID = CreateGUID(8) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(12)
                End Function
    
                Function CreateGUID(tmpLength)
                    Randomize Timer
                    Dim tmpCounter,tmpGUID
                    Const strValid = "0123456789ABCDEF"
                    For tmpCounter = 1 To tmpLength
                    tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
                    Next
                    CreateGUID = tmpGUID
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の C:\InetPub\Wwwroot Web サイトのフォルダー) を見つけます。
    3. ファイルにGuidTest5.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 Windows GUID のように書式設定されたランダムな GUID が表示されます。 ページを更新すると、値がランダムに変更されます。

より強力な Windows スタイルのランダム GUID を作成する

Windows GUID は文字ごとに 16 進数を使用するため、GUID 内の文字ごとに 16 個の値を使用できます。 値を展開してアルファベット全体を含める場合、GUID 内の文字ごとに 36 個の値を使用できます。 この例では、 可変長ランダム GUID の作成 の例の関数を使用して、Windows GUID と同じ形式で GUID を作成します。

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ アクセサリ] を選択し、[ メモ帳 ] を選択してメモ帳を開きます。

  2. 次の ASP コードをメモ帳に入力するか貼り付けます。

    <%@LANGUAGE="VBSCRIPT"%>
    <HTML>
        <BODY>
            <%
                Response.Write "<P>GUID = " & CreateWindowsGUID()
    
                Function CreateWindowsGUID()
                    CreateWindowsGUID = CreateGUID(8) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(4) & "-" & _
                    CreateGUID(12)
                End Function
    
                Function CreateGUID(tmpLength)
                    Randomize Timer
                    Dim tmpCounter,tmpGUID
                    Const strValid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                    For tmpCounter = 1 To tmpLength
                    tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
                    Next
                    CreateGUID = tmpGUID
                End Function
            %>
        </BODY>
    </HTML>
    
  3. ページを保存します。

    1. [ファイル] メニューの [名前を付けて保存] を選択します。
    2. Web サイトのルート フォルダー (通常は既定の C:\InetPub\Wwwroot Web サイトのフォルダー) を見つけます。
    3. ファイルにGuidTest6.aspという名前を 付けます
    4. [保存] を選択します。
    5. [ファイル] メニューの [終了] を選択します。
  4. インターネット エクスプローラーを使用してページを見つけます。 Windows GUID のように書式設定されたランダムな GUID が表示されます。 ページを更新すると、値がランダムに変更されます。