2017-05-08 3 views
-1

SQL Server 2016 Expressでは、最初にintデータ型を使用する主キーを持つテーブルを作成しました。それを行うことは可能です私の主キーのデータ型を一時テーブルで変更することはできますか?

alter table ExpAwbs 
drop constraint PK_ExpAwbs; 

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

alter table ExpAwbs 
add constraint PK_ExpAwbs primary key (idExpAwbs); 

私はこの

Msg 4902, Level 16, State 1, Line 1 
Cannot find the object "ExpAwbs" because it does not exist or you do not have permissions. 

を取得:今、さらにプロジェクトに、私は文字列データ型であることを、このコラムを必要とするが、私はこれをしようとすることを実現しました一時的なテーブルで何をしようとしているのですか、テーブルを作り直す必要がありますか?

+2

テーブルが存在する正しいデータベースにいますか? –

答えて

4

これを試してみてください。

+0

それは奇妙です。これはうまくいきましたが、データベースサーバーには1人のユーザーしかいません。それは管理ユーザーです。しかし、システム・バージョン管理された一時表から主キー制約を削除することができなくなった今、私は別のエラーが発生しました。これは、私がやろうとしていることができないことを意味します。 –

+0

実際には、システムのバージョン管理を変更すると、主キーの制約が解除されました。 –

0

@wei_dbaが言いましたように、許可の問題があるようです。そのことを証明するために、私はあなたのテーブルを作り直し、いくつかのデータを追加して試しました。あなたがそれを行うことができない場合、明らかに問題は許可の領域内にあります。誰かにあなたのためにそのクエリを実行させる必要があるかもしれません。
クエリを確認しているうちに、別の問題が発生しました。あなたは、次の置き換えたいことがあります。

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

推論あなたはPKが非NULL可能であることを確認する必要があるということで、あなたはあなたのクエリに入れていない何か

alter table ExpAwbs 
alter column idExpAwbs varchar(12) not null; 

で。これは、そのユーザーがアクセス権を持っていないという意味では動作しない場合は

Use YourDatabaseName 
Go 

alter table ExpAwbs 
drop constraint PK_ExpAwbs; 

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

alter table ExpAwbs 
add constraint PK_ExpAwbs primary key (idExpAwbs); 

を、だから、ユーザーまたはGrant、そのユーザーの権限を変更する必要があります。

関連する問題