我有一个应用程序使用SQL Server数据库和几个数据库实例... test,prod等...我正在进行一些应用程序更改,其中一个更改涉及从nvarchar更改列(最大值)到nvarchar(200),以便我可以添加一个唯一的约束。 SQL Server告诉我,这需要删除表并重新创建它。
我想整理一个脚本,它将执行表删除,使用新架构重新创建它,然后重新插入之前一次性的数据,如果可能的话,只是为了让事情变得简单易用将此更改迁移到生产中。
可能有一个很好的SQL Server方法可以做到这一点,但我只是没有意识到这一点。如果我使用Mysql,我会mysqldump表及其内容,并使用它作为我的脚本将该更改应用于生产。我在SQL服务器中找不到任何导出功能,它将为我提供一个文本文件,其中包含表中所有数据的插入。
答案 0 :(得分:6)
使用SQL Server的Generate Scripts命令
INSERT
个语句。
答案 1 :(得分:2)
无需编写脚本
这里有两种方式
1使用alter table ....alter column.....
示例..您必须一次执行1列
create table Test(SomeColumn nvarchar(max))
go
alter table Test alter column SomeColumn nvarchar(200)
go
在转换列
时转储到新表中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';
现在添加你的索引