現在のコマンドで重大なエラーが発生しました。結果は破棄しなければなりません。

Azureの仮想マシンのWindows10にSQLServer2014をセットアップして、特定のテーブルを作ろうとするとエラーが起きる。仮想マシンではない「生」PCだとエラーは起きない。なんとも不思議。

表示されるエラーメッセージは下記の通り。


何が問題なのかさっぱりわからないので、エラーが起きている個所を調べていくと、下記のSQLを実行すると起きていた。

create table [mm70_経年結果一覧設定追加表示項目_腎]
(
    [団体番号] int NOT NULL ,
    [項目種別] int NOT NULL ,
    [データ種別] int NOT NULL DEFAULT 1 ,
    CONSTRAINT [PK_mm70_経年結果一覧設定追加表示項目_腎] PRIMARY KEY ( [団体番号], [項目種別] )
);

さらに厄介なのは、エラーは出るのだけどテーブルは作られていて、しかし、そのテーブルにアクセスするとエラーになる。


selectもinsertもできないので、テーブルにデータを保存することも参照することもできない。



いろいろ試してみると、

  • PRIMARY KEYを指定する行を消すとエラーは起きなかった。
  • テーブル名を「いろはにほへとちりぬるをわかよたれそつねならむ」に変えるとエラーは起きなかった。
どうもテーブル名に原因があるような、、、よくわからない。

不思議なのは、同じSQLを生PCで実行するとエラーは起きず、仮想マシンで実行するとエラーになるという点。しかも、似たようなSQLを他にもいくつか実行しているのにエラーになるのはこのSQLだけで、やはりテーブル名に原因あり?

ということで、原因はわからないが、以下のように書き換えるとエラーは出なくなった。

create table [mm70_経年結果一覧設定追加表示項目_腎]
(
    [団体番号] int NOT NULL ,
    [項目種別] int NOT NULL ,
    [データ種別] int NOT NULL DEFAULT 1 ,
    PRIMARY KEY ( 団体番号,項目種別 )
);

そして、もともとキーの名前など指定する必要はないのだから、最初からこう書くべきであった。多分、元のSQLはSQLServerManagementStudioのスクリプトをそのままコピーしたのだろうと思う。


コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。