我有一个问题,即当我试图通过查询或直接修改数据类型来改变表的数据类型时,我常常会遇到一些错误,说明无法完成。但是,就好像我在server explorer
visual studio
中打开同一个表格并修改数据类型一样,它可以轻松完成任何错误。
我尝试使用primary key
修改数据类型foreign key
到int
的某些表的varchar
,Management Studio
会给我一些错误。
但是当我从Server explorer
完成Visual Studio
时,它完成了同样的事情。
任何人都可以说出差异
答案 0 :(得分:3)
我想我有这个问题(至少在sql server 2008上):
Tools->Options->Designers
。如果选中此选项,您可以查看有关何时发生的更多信息here。
答案 1 :(得分:2)
在没有看到您的具体错误的情况下,我只能说UI不仅仅是一个简单的命令。它有时会创建临时存储并根据需要复制数据,以使体验愉快。您应该使用UI中的脚本功能捕获更改并查看它正在做什么?
答案 2 :(得分:2)
可以使用查询来完成,因为这正是SQL Server所做的。但是,该脚本比简单的ALTER TABLE
语句复杂得多;通常涉及使用更改的数据类型创建临时表,从原始表复制数据,删除原始表,然后重命名临时表。
在SSMS的“设计”视图中修改表的结构时,有一个选项可以为更改生成脚本,因此您可以在多个服务器上运行它等。这将显示确切的过程实际上是在幕后发生的。