Microsoft SQL Compact Edition重命名列

Microsoft SQL Compact Edition重命名列,sql,database-design,sql-server-ce,rename,ssms,Sql,Database Design,Sql Server Ce,Rename,Ssms,在SQL Server Compact Edition中重命名列时遇到问题。我知道可以使用sp_rename重命名表,但这不适用于列 我已经找了一个替代品,但还没有找到 我是否可以删除列,然后在特定列之后添加新列?如果我删除列并将其添加到指定列之后,数据将丢失,对吗 似乎一旦创建了表,就无法对其进行正确修改-这是SQLCE的另一个限制吗?sp\u rename也适用于列: EXEC sp_rename objname = '< Table Name.Old Column Name >

在SQL Server Compact Edition中重命名列时遇到问题。我知道可以使用sp_rename重命名表,但这不适用于列

我已经找了一个替代品,但还没有找到

我是否可以删除列,然后在特定列之后添加新列?如果我删除列并将其添加到指定列之后,数据将丢失,对吗

似乎一旦创建了表,就无法对其进行正确修改-这是SQLCE的另一个限制吗?

sp\u rename也适用于列:

EXEC sp_rename
objname = '< Table Name.Old Column Name >',
@newname = '<New Column Name>',
@objtype = 'COLUMN'  

更新:实际上,sp_重命名过程在SQL CE中不可用!您可以在

上找到解决方案。SQL CE似乎确实不允许更改列名

创建一个新列并删除旧列是正确的

如果只添加一列并删除旧列,则会丢失数据,因此需要发出update语句将数据从旧列移到新列

类似于

alter Table [dbo].[yourTable] add [newColumn] [DataType]

update yourTable set newColumn = oldColumn

alter Table [dbo].[yourTable] drop column [oldColumn]
应创建新列,将数据从旧列复制到新列,然后删除旧列


希望有帮助

SDF Viewer内置了此功能,您还可以重命名索引、键和关系。只需在数据库树视图中右键单击要更改的名称。

您确定它也适用于Compact Edition吗?在发布这个问题之前我已经试过了,我用你的例子也试过了,但没有效果。我得到的是:为过程指定的参数值无效。[Argument=3,procedureif known=sp_rename]您是对的。很抱歉似乎在SQLCE中sp_重命名不可用。更新我的答案…我仍然可以使用EXEC sp_在MS Compact Edition 2008中成功重命名“demo”、“pets”来重命名表。但重命名列时“是”失败。@Kamyar,您添加的链接现在已失效。这可能可行,但新添加的列将是表中的最后一列,我不希望这样。有after,所以您可以在指定列之后添加,但它在CE中不起作用。之后找不到关键字。这是我的查询:ALTER TABLE INTERVERS在Product之后添加列NewC int,这是错误:解析查询时出错。[Token line number=2,Token line offset=21,Token in error=after]。CE中的Alter Table从这里查看似乎缺少该功能缺少此功能我不确定在不重新创建表的情况下如何保持当前顺序。就我个人而言,我不会过分担心这一点,因为列顺序将由我的select语句指定。完美的解决方案,除非列是索引的一部分。记住第一个命令上的数据类型,否则脚本将失败/失败/成功…我必须添加[newColumn]数据类型,例如[HandlebarsTemplate]ntext,才能使其工作,否则,感谢99.999%的答案@科林维斯曼:谢谢你的提醒,我应该在9年前第一次被指出时更新答案。现在更新-如果您可以提供SDF查看器文档的链接,那么比neverI晚更新更好。
alter Table [dbo].[yourTable] add [newColumn] [DataType]

update yourTable set newColumn = oldColumn

alter Table [dbo].[yourTable] drop column [oldColumn]