为什么通过查询不允许更改列,但很容易完成的是服务器资源管理器

时间:2011-11-16 12:43:43

标签: asp.net sql-server-2008 ssms

我有一个问题,即当我试图通过查询或直接修改数据类型来改变表的数据类型时,我常常会遇到一些错误,说明无法完成。但是,就好像我在server explorer visual studio中打开同一个表格并修改数据类型一样,它可以轻松完成任何错误。

我尝试使用primary key修改数据类型foreign keyint的某些表的varcharManagement Studio会给我一些错误。

但是当我从Server explorer完成Visual Studio时,它完成了同样的事情。

任何人都可以说出差异

3 个答案:

答案 0 :(得分:3)

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

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

如果选中此选项,您可以查看有关何时发生的更多信息here

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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