为什么不允许通过查询修改列,但很容易做到是服务器资源管理器



我有一个问题,即当我试图通过查询或直接修改数据类型来改变表的数据类型时,我曾经得到一些错误,说明这是无法做到的。但是,如果我从visual studio中打开server explorer中的同一表并修改数据类型,则很容易完成,没有任何错误。

我试图修改primary key,这是一个foreign key为一些表从数据类型intvarchar使用Management Studio它抛出我一些错误。

但是当我从Visual Studio通过Server explorer完成同样的事情时,它是在分数中完成的。

有谁能说出有什么不同吗

我想我有这个问题(至少与sql server 2008):

  • 请看Tools->Options->Designers
  • 取消选中"防止保存需要重新创建表的更改"再试一次。

你可以在这里看到更多的信息,如果选项被选中,它何时发生

在没有看到具体错误的情况下,我只能说UI所做的远不止一个简单的命令。它有时会创建临时存储并根据需要复制数据,以使体验愉快。您应该使用UI中的脚本功能来捕获更改并查看它在做什么?

可以使用查询完成,因为这正是SQL Server所做的。然而,该脚本比简单的ALTER TABLE语句要复杂得多;通常包括创建一个具有更改数据类型的临时表,从原始表复制数据,删除原始表,然后重命名临时表。

当在SSMS的Design视图中修改表的结构时,有一个选项可以为更改生成脚本,因此您可以在多个服务器上运行它,等等。这将向您展示幕后实际发生的确切过程。

相关内容

最新更新