none
チューニングアドバイザで日本語テーブル名と列名が文字化けしてしまう RRS feed

  • 質問

  • 環境:WindowsXP、SQL Server 2005(Developer Edition)
    チューニングアドバイザを使ったことがなかったので、新しくテスト用のデータベースとテーブルを作成し、

    郵便番号のCSVをインポートしました。
    データベース名:TestTuning
    テーブル名:郵便番号情報

    Select文のSQLを記述して、どんな結果が返ってくるか試そうとしてみました。
    結果は、テーブル名や列名がすべて文字化けてしまい、認識できずにSQL構文エラーとなってしいました。

    なにか文字化けしないような設定があれば、教えてください。
    よろしくお願いいたします。

    SQLは以下のものです。
    use TestTuning;
    go
    select * from 郵便番号情報
    where ID=100;
    go
    select * from 郵便番号情報
    where ID<100;
    go
    select * from 郵便番号情報
    where 都道府県='東京都';
    go
    select * from 郵便番号情報
    where 都道府県='東京都' and 市区町村='新宿区' and 番地='大久保';
    go

    2008年10月22日 7:16

回答

  •  

    > Select文のSQLを記述して、どんな結果が返ってくるか試そうとしてみました。
    > 結果は、テーブル名や列名がすべて文字化けてしまい、認識できずにSQL構文エラーとなってしいました。

    > なにか文字化けしないような設定があれば、教えてください。
    > よろしくお願いいたします。

    これだけの情報では、何が原因か答えようがないので、以下の情報を教えてください。

     1.どんな風に文字化けするのですか?

     2.SQL Server Management Studioで[データベース]-[テーブル]を展開しても文字化けしていますか?

     3.郵便番号情報テーブルの定義はどうなっていますか?

     4.TestTuningデータベースの照合順序は何になっていますか?

     

     


    2008年10月22日 8:15
  • 環境を作って、検証してみました。

    原因ですが、データベースエンジンチューニングアドバイザで指定するワークロード用のファイルが

    Unicode(UTF-8)で保存されている必要があるようです。

     

    (SQL Server Management Studioで保存するとANSIで保存されるようなので)

    メモ帳でワークロード用のファイルを開き、[ファイル]-[名前を付けて保存]で、[文字コード]を[UTF-8]に

    変更して保存してください。

     

    再度データベースエンジンチューニングアドバイザを立ち上げ、ワークロード用ファイルにUTF-8に変換した

    ファイルを指定して、[分析の開始]を行ってみてください。

     

    自分のところでは、これで正常に処理されました。

     

    2008年10月23日 13:52
  • できました!

    CatTailさん、丁寧な説明と検証、ありがとうございました。

     

    SQL Server Profilerでtrc(トレースファイル)を同じ内容で作成した場合も文字化けせずに

    同じ結果がでることを確認しました。Unicodeで保存されていました。

    2008年10月24日 0:53

すべての返信

  •  

    > Select文のSQLを記述して、どんな結果が返ってくるか試そうとしてみました。
    > 結果は、テーブル名や列名がすべて文字化けてしまい、認識できずにSQL構文エラーとなってしいました。

    > なにか文字化けしないような設定があれば、教えてください。
    > よろしくお願いいたします。

    これだけの情報では、何が原因か答えようがないので、以下の情報を教えてください。

     1.どんな風に文字化けするのですか?

     2.SQL Server Management Studioで[データベース]-[テーブル]を展開しても文字化けしていますか?

     3.郵便番号情報テーブルの定義はどうなっていますか?

     4.TestTuningデータベースの照合順序は何になっていますか?

     

     


    2008年10月22日 8:15
  • 返答ありがとうございます。

     

    1.日本語の部分が以下のようになります。

    select * from 郵便番号情報
    where ID=100;

    E000 select * from —X•Ö”ԍ†î•ñ
    where ID=100;   1 [Microsoft][SQL Native Client][SQL Server]'—' 付近に不適切な構文があります。

     

    列名も同様です。

    select * from 郵便番号情報
    where 都道府県='東京都';

    E000 select * from —X•Ö”ԍ†î•ñ
    where “s“¹•{Œ§='“Œ‹ž“s';   1 [Microsoft][SQL Native Client][SQL Server]'—' 付近に不適切な構文があります。

     

    2.文字化けはしません。

    SQL Server Management Studioで以下のSQLでテーブル名を表示させても、文字化けはしませんでした。

    SELECT NAME ,type FROM sysobjects where type='U' ORDER BY NAME

     

    3.定義は以下のとおりです。

    IDが主キー設定です。

    列名、型、NULL許可

    ID int Unchecked
    code int Checked
    郵便番号short int Checked
    郵便番号 int Unchecked
    都道府県カナ nvarchar(50) Unchecked
    市区町村カナ nvarchar(50) Unchecked
    番地カナ nvarchar(50) Unchecked
    都道府県 nvarchar(50) Checked
    市区町村 nvarchar(50) Checked
    番地 nvarchar(50) Checked
    f1 smallint Checked
    f2 smallint Checked
    f3 smallint Checked
    f4 smallint Checked
    f5 smallint Checked
    f6 smallint Checked

     

    4.照合順序は Japanese_CI_AS になっていました。

    以上です。よろしくおねがいします。

    2008年10月23日 3:12
  • 環境を作って、検証してみました。

    原因ですが、データベースエンジンチューニングアドバイザで指定するワークロード用のファイルが

    Unicode(UTF-8)で保存されている必要があるようです。

     

    (SQL Server Management Studioで保存するとANSIで保存されるようなので)

    メモ帳でワークロード用のファイルを開き、[ファイル]-[名前を付けて保存]で、[文字コード]を[UTF-8]に

    変更して保存してください。

     

    再度データベースエンジンチューニングアドバイザを立ち上げ、ワークロード用ファイルにUTF-8に変換した

    ファイルを指定して、[分析の開始]を行ってみてください。

     

    自分のところでは、これで正常に処理されました。

     

    2008年10月23日 13:52
  • できました!

    CatTailさん、丁寧な説明と検証、ありがとうございました。

     

    SQL Server Profilerでtrc(トレースファイル)を同じ内容で作成した場合も文字化けせずに

    同じ結果がでることを確認しました。Unicodeで保存されていました。

    2008年10月24日 0:53