我有一个问题,即当我试图通过查询或直接修改数据类型来改变表的数据类型时,我曾经得到一些错误,说明这是无法做到的。但是,如果我从visual studio
中打开server explorer
中的同一表并修改数据类型,则很容易完成,没有任何错误。
我试图修改primary key
,这是一个foreign key
为一些表从数据类型int
到varchar
使用Management Studio
它抛出我一些错误。
但是当我从Visual Studio
通过Server explorer
完成同样的事情时,它是在分数中完成的。
有谁能说出有什么不同吗
我想我有这个问题(至少与sql server 2008):
- 请看
Tools->Options->Designers
- 取消选中"防止保存需要重新创建表的更改"再试一次。
你可以在这里看到更多的信息,如果选项被选中,它何时发生
在没有看到具体错误的情况下,我只能说UI所做的远不止一个简单的命令。它有时会创建临时存储并根据需要复制数据,以使体验愉快。您应该使用UI中的脚本功能来捕获更改并查看它在做什么?
可以使用查询完成,因为这正是SQL Server所做的。然而,该脚本比简单的ALTER TABLE
语句要复杂得多;通常包括创建一个具有更改数据类型的临时表,从原始表复制数据,删除原始表,然后重命名临时表。
当在SSMS的Design视图中修改表的结构时,有一个选项可以为更改生成脚本,因此您可以在多个服务器上运行它,等等。这将向您展示幕后实际发生的确切过程。