2011-03-07 49 views
3

我有一個應用程序使用SQL Server數據庫與數據庫的幾個實例...測試,prod等...我正在做一些應用程序更改,其中一項更改涉及將列從nvarchar(max)更改爲nvarchar(200),以便我可以在其上添加唯一約束。 SQL Server告訴我,這需要刪除表並重新創建它。相當於SQL Server的MySQL轉儲爲表中的所有數據生成插入語句

我想放置一個腳本,它將執行表格刪除操作,使用新的模式重新創建它,然後重新插入先前所有的數據,如果可能的話,只是爲了讓事情簡單易用我將此更改遷移到生產。

有可能是一個很好的SQL Server方式來做到這一點,但我只是不知道它。如果我使用的是Mysql,我將mysqldump表及其內容,並將其用作我的腳本以將該更改應用於生產。我在SQL服務器中找不到任何導出功能,它會爲我提供一個文本文件,其中包含表格中所有數據的插入。

回答

5

使用SQL Server的生成腳本命令

  • 右擊數據庫;任務 - >生成腳本
  • 選擇表,單擊下一步
  • 單擊高級按鈕
  • 找到數據的腳本類型 - 選擇模式和數據。
  • 然後你可以選擇保存到文件,或放入新的查詢窗口。
  • 結果在子彈選擇INSERT報表的所有表數據2.

SQL Server Generate Scripts Data

+0

謝謝。我不知道我是如何錯過的。我想我希望能夠右鍵單擊表格並讓它爲我提供導出該表格數據的選項。 – 2011-03-08 13:22:34

2

無需腳本

這裏有兩種方式

1使用alter table ....alter column.....

例如..你必須在1時間做1列

create table Test(SomeColumn nvarchar(max)) 
go 

alter table Test alter column SomeColumn nvarchar(200) 
go 

2轉儲到一個新表,同時將列

select <columns except for the columns you want to change>, 
    convert(nvarchar(200),YourColumn) as YourColumn 
into SomeNewTable 
from OldTable 

降舊錶

此表作爲舊錶

EXEC sp_rename 'SomeNewTable', 'OldTable'; 

重命名爲同桌現在添加您的索引

+0

感謝您的回答。這也是有道理的。 – 2011-03-08 13:24:15

相關問題