在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.
是否有可能在临时表上执行我想要做的事情,或者我是否需要重新制作表格?
答案 0 :(得分:4)
试试这个:
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
该用户的权限。
答案 1 :(得分:0)
正如@wei_dba所提到的,它肯定似乎是一个许可问题。为了证明这一点,我重新创建了你的表,向它添加了一些数据并尝试了它 - 它起作用了。如果你不能这样做,显然问题在于权限范围内;您可能需要让某人为您运行该查询 在查看您的查询时,我看到了另一个快速修复问题。您可能想要替换以下内容:
alter table ExpAwbs
alter column idExpAwbs varchar(12);
带
alter table ExpAwbs
alter column idExpAwbs varchar(12) not null;
推理是您需要确保PK不可为空,这是您未在查询中添加的内容。