我正在使用SQL Server 2008 Management Studio,并有一个表,我想迁移到不同的db服务器。

有任何选项导出数据作为插入到SQL脚本??


当前回答

如果你正在运行SQL Server 2008 R2,在SSMS中内置的选项就像上面描述的marc_s一样发生了一些变化。不再像图中那样选择“脚本数据= true”,现在在“表/视图选项”分组上方有一个名为“脚本数据类型”的新选项。在这里,您可以选择只脚本数据、模式和数据或模式。效果非常好。

其他回答

下面是一个使用游标迭代源表创建数据迁移脚本的示例。

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'

在对象资源管理器的SSMS中,右键单击数据库,右键选择“任务”,然后选择“生成脚本”。

这将允许您为单个或所有表生成脚本,其中一个选项是“脚本数据”。如果您将其设置为TRUE,向导将为您的数据生成一个带有INSERT INTO()语句的脚本。

如果使用2008 R2或2012,它被称为其他东西,请参阅下面的截图

2008 R2或更高版本,例如2012

选择“脚本的数据类型”,可以是“仅数据”,“模式和数据”或“仅模式”-默认值)。

然后在Codeplex上有一个“SSMS插件”包(包括源代码),它承诺几乎相同的功能和更多的功能(如快速查找等)。

只是更新屏幕截图来帮助其他人,因为我使用的是更新的v18,大约2019年。

在这里,您可以选择某些表或使用所有默认表。出于我自己的需要,我只指出了一个表。

接下来,有“脚本选项”,你可以选择输出文件,等等。与上面的多个答案一样(再次强调,我只是为更新的v18.4 SQL Server Management Studio去掉旧答案),我们真正想要的是在“Advanced”按钮下面。出于我自己的目的,我只需要数据。

最后,在执行前有一个审查总结。执行后,将显示操作状态报告。

SQl server Mng Studio 2016:

在搜索了很多之后,这是我最好的选择:

如果您有大量数据,需要一个紧凑而优雅的脚本,可以试试:SSMS Tools Pack

它生成一个所有选择语句的联合,将项目插入到目标表中,并很好地处理事务。

截图