Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我可以更改时态表上主键的数据类型吗?_Sql Server_Alter Table_Alter Column - Fatal编程技术网

Sql server 我可以更改时态表上主键的数据类型吗?

Sql server 我可以更改时态表上主键的数据类型吗?,sql-server,alter-table,alter-column,Sql Server,Alter Table,Alter Column,在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 pri

在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.

是否可以在临时表上执行我试图执行的操作,或者是否需要重新生成该表?

正如@wei_dba所提到的,这显然是一个权限问题。为了证明这一点,我重新创建了您的表,向其中添加了一些数据并进行了尝试——它起了作用。如果您无法做到这一点,那么问题显然在权限范围内;您可能需要有人为您运行该查询。 在查看您的查询时,我看到了另一个快速修复的问题。您可能需要替换以下内容:

alter table ExpAwbs  
alter column idExpAwbs varchar(12);

理由是您需要确保PK不可为空,这是您没有在查询中输入的内容

试试这个:

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);

如果这不起作用,则意味着用户没有权限,因此您必须更改用户或为该用户授予权限。

您是否位于该表所在的正确数据库中?这很奇怪。这是可行的,但是数据库服务器只有一个用户,那就是管理员用户。但是,现在我得到了一个不同的错误,因为我无法从系统版本的时态表中删除主键约束。我假设这意味着我试图做的事情无法完成。实际上,系统版本控制的改变允许我放弃主键约束。
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);