Sql server SQL Server相当于MySQL转储,用于为表中的所有数据生成insert语句

Sql server SQL Server相当于MySQL转储,用于为表中的所有数据生成insert语句,sql-server,Sql Server,我有一个应用程序,它使用SQL Server数据库和数据库的多个实例…测试、生产等。。。我正在进行一些应用程序更改,其中一个更改涉及将一列从nvarchar(max)更改为nvarchar(200),以便我可以在其上添加唯一约束。SQL Server告诉我,这需要删除表并重新创建它 我想编写一个脚本来执行表删除,用新模式重新创建它,然后一次性重新插入以前存在的数据,如果可能的话,只是为了在我将此更改迁移到生产环境时保持简单易用 可能有一种很好的SQL Server方法可以做到这一点,但我只是不知

我有一个应用程序,它使用SQL Server数据库和数据库的多个实例…测试、生产等。。。我正在进行一些应用程序更改,其中一个更改涉及将一列从nvarchar(max)更改为nvarchar(200),以便我可以在其上添加唯一约束。SQL Server告诉我,这需要删除表并重新创建它

我想编写一个脚本来执行表删除,用新模式重新创建它,然后一次性重新插入以前存在的数据,如果可能的话,只是为了在我将此更改迁移到生产环境时保持简单易用


可能有一种很好的SQL Server方法可以做到这一点,但我只是不知道。如果我使用的是Mysql,我会使用Mysql转储表及其内容,并将其用作将更改应用于生产的脚本。我在SQL server中找不到任何导出功能,该功能将为我提供一个包含表中所有数据的插入的文本文件。

使用SQL server的“生成脚本”命令

  • 右键点击数据库;任务->生成脚本
  • 选择表,单击“下一步”
  • 单击高级按钮
  • 查找要编写脚本的数据类型-选择架构和数据
  • 然后,您可以选择保存到文件,或放入新的查询窗口
  • 在项目符号2中选择的所有表格数据的
    INSERT
    语句中产生结果
无需编写脚本

这里有两种方法

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

示例..您必须一次执行一列

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';