2011-11-16 29 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中的設計視圖中修改表格的結構時,可以選擇爲更改生成腳本,以便可以在多個服務器上運行它等。這將向您顯示確切的過程這實際上是幕後發生的。

相關問題