2011-11-16 28 views
2

我有一个问题,即当我试图通过查询或通过直接修改数据类型,我用来获取一些说明这一点的错误不能完成。但是,如果我从visual studio打开server explorer中的同一个表并修改数据类型,那么很容易完成,而不会出现任何错误。为什么改变列不被允许通过查询,但很容易做到服务器管理器

我尝试使用Management Studio扔给我一些错误修改primary key这是从数据类型int一些表一个foreign keyvarchar

但同样的事情,当我通过Server explorerVisual Studio完成它在一小部分完成。

任何一个可以告诉什么区别

+0

发布您的数据访问代码和您试图修改数据的代码。 – ChrisF

+0

我没有写任何代码,只是右键单击列,并尝试从两种方式编辑数据类型,而在'sql管理工作室'我得到的错误,但是当我在服务器资源管理器中做同样的事情与出错任何错误 – Dotnet

+0

+1,一个很好的问题。 –

回答

3

我觉得我有这个问题(至少与SQL Server 2008):

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

如果选中该选项,您可以看到更多信息here

+0

是的,这一个是正确的,这就是为什么我投了+1 – Dotnet

+0

比你还可以标记答案为选定的答案:P – misha

2

没有看到您的特定错误,所有我能说的是,UI确实远远超过了简单的命令。它有时会根据需要创建临时存储和副本数据,以使体验变得愉快。您应该使用UI中的脚本功能来捕获更改并查看它在做什么?

2

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

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

相关问题