小田急ロマンスカー 自動音声による予約

小田急ロマンスカー あさぎり号で駿河小山、御殿場へ行く場合、
インターネットでの予約はできない。
御殿場線内はJRだからなのだろう。

そうすると、
電話予約(オペレーターまたは自動音声)、窓口、旅行代理店での予約のいずれかになるが、
夜間の場合は自動音声による電話予約しかなさそうだ。

この自動音声による予約がなかなか難易度が高い。
最初に、「1番:特急券予約、2番:空席照会、3番:予約確認」から選択するのだが、
声に出して選択しなければならない。
「いち」と言ってもダメで、「いちばん」と言わないといけないようだ。
言い方がおかしかったり声が小さかったりして2、3回失敗すると、
「おかけ直しください」と言われて電話が切れてしまう。
何度もかけ直してしまった。

小田急のホームページには、
※プッシュホンによる予約もできます。詳しくは駅係員におたずねください。
と書いてあるが、プッシュホンで「1」を押してもダメだった。
係員におたずねしてからでないとダメなのかもしれない。

一度コツをつかめば大丈夫そうだが、
相手の機械女性はかなり早口でベラベラしゃべるので、
最後に予約番号を聞き漏らさないように注意が必要だ。
聞き逃してもそのまま待っていればもう一度予約番号を言ってくれる。

インターネット予約ができないのは
あさぎりで駿河小山、御殿場へ行く場合だけなので、
この自動音声システムはこのままでもいいように思が、
できればもう少し親切に話して欲しい。

SQL Server プログラムからストアドにデーターテーブルを渡す方法

VB.NETなどのプログラムからSQL Serverのストアドへテーブルデーターを渡すには、ユーザー定義テーブル型を利用する。
なお、ユーザー定義テーブル型はSQL Server2008以降で使用できる。

手順(1) ユーザー定義テーブル型の作成と権限設定

    CREATE TYPE [dbo].[UserTableTypeInt1] AS TABLE(
    [id] [int] NULL
    )

    ストアドで使うには作成したユーザー定義型に実行(EXECUTE)権限を設定する必要がある。
    GRANT EXECUTE ON TYPE::[dbo].[UserTableTypeInt1] TO ユーザー名;

    ManagementStudioから権限を設定する場合は、
    [プログラミング]-[種類]-[ユーザー定義テーブル型]で、作成したテーブル型を右クリックでプロパティーから権限を設定するが、なぜか実行権限は表示されないので制御(CONTROL)権限を設定する。
    制御権限を設定するとその他の全ての権限も暗黙的に設定される。

手順(2) ストアドの作成

    CREATE PROCEDURE stTest1
       @a1 UserTableTypeInt1 READONLY — ユーザー定義テーブル型
    AS
    BEGIN
        UPDATE Table1 SET c1 = 0 WHERE ID IN (SELECT id FROM @a1)
    END
    GO

手順(3) 呼び出し側プログラムの作成

    Dim cn As SqlClient.SqlConnection

    Private Sub Test()
        Dim cmd As New SqlClient.SqlCommand
        Try
           ‘ストアドに渡すDataTableの作成
            Dim dt1 As New DataTable
            dt1.Columns.Add(“ID”, GetType(Integer))
            dt1.Rows.Add(1)
            dt1.Rows.Add(2)
            dt1.Rows.Add(3)

            ‘ストアドの実行
            cmd.Connection = cn
            cmd.CommandText = “stTest1”
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Clear()
            cmd.Parameters.Add(“@a1”, SqlDbType.Structured)
            cmd.Parameters(“@a1”).TypeName = “UserTableTypeInt1”
            cmd.Parameters(“@a1”).Value = dt1 ‘DataTableをパラメーターとして渡す
            Dim res1 As Integer = cmd.ExecuteNonQuery()
        Finally
            cmd.Dispose()
        End Try
    End Sub


参考:
https://technet.microsoft.com/ja-jp/library/bb522526 (ユーザー定義テーブル型)

Windows8/8.1 + SQL Server での不具合(高速スタートアップ)

Windows8/8.1にインストールしたSQL Serverに接続すると、
データーにアクセスできずに、
ログを見ると次のようなエラーが発生している場合がある。

エラー: 823、重大度: 24、状態: 2。
エラー: 9001、重大度: 21、状態: 4。
Error: 17053, Severity: 16, State: 1.
The operating system returned error 21(デバイスの準備ができていません。)
オペレーティング システムにより、ファイル ‘***’ のオフセット 0x00000000f20000 で 読み取り 中の SQL Server にエラー 21(デバイスの準備ができていません。) が返されました。
Write error during log flush.
などのエラーがログに記録されている。

Windows8/8.1では高速スタートアップという機能が採用され、
シャットダウンが本当のシャットダウンではなく休止状態に近い状態であり、
これが悪さをしてSQL Serverが正常に立ち上がっていないと思われる。
高速スタートアップを無効にして立ち上げ直せばデーターにアクセスできるようになる。

Windows 8 / 8.1で高速スタートアップを無効にする方法
(NECサイト)

高速スタートアップは大して高速にならないし、
他にも不具合が起きやすいと思うので
SQL Serverを使わない場合でも無効にしておいたほうがいいだろう。