脚本表与代码中的数据

Que*_*CPO 5 c# sql-server ssms smo

在SQL Server 2008 R2中,用户可以通过右键单击数据库,选择Tasks和来编写包含数据的表Generate Scripts.将弹出一个向导,询问用户他们想要什么(多个表,一个表等)以及一些高级选项(允许用户同时获取表模式和数据); 对于问题,请参阅这个有用的帖子(在"The Handy"下).

不幸的是,SQL Server没有生成这些脚本的脚本,有时我们必须编写一些包含其中所有数据的表.我不是每次都手动执行此操作,而是认为让C#应用程序为测试表调用这些进程并为包含所有数据的表生成脚本会更容易,将其保存为本地文件.

当我使用它时SqlConnection,我没有看到执行此类任务的选项(尽管它可能与其他东西有关).这个向导如何访问?

更新:在初步回答之后,我认为这是不可能的,所以我为那些更熟悉TSQL的人制定了一个有趣的解决方案.我创建了一个类似于下面的存储过程:

CREATE PROCEDURE usp_ScriptTableAndData
AS
BEGIN

    CREATE TABLE ScriptTemp(
        Value VARCHAR(8000)
    )

    INSERT INTO ScriptTemp
    SELECT '/*   Build the Reference Table   */'

    INSERT INTO ScriptTemp
    SELECT 'USE [DB]
        GO

        SET ANSI_NULLS ON
        GO

        SET QUOTED_IDENTIFIER ON
        GO

        SET ANSI_PADDING ON
        GO

        CREATE TABLE [dbo].[Table](
            [ID] [int] IDENTITY(1,1) NOT NULL,
            [Reference] [varchar](50) NULL,
            [TableDate] [datetime] NOT NULL,
            [Display] [bit] NULL
        )

        SET ANSI_PADDING OFF
        GO


        INSERT INTO ScriptTemp
        SELECT '/*   Insert the Table Values    */'

        INSERT INTO ScriptTemp
        SELECT 'INSERT INTO Table VALUES(' + CAST(ID AS VARCHAR(3)) + 
            ',' + '''' + LTRIM(RTRIM(ISNULL(Reference,'NULL'))) + '''' + 
            ',' + '''' + CONVERT(VARCHAR(25),TableDate,120) + '''' + 
            ',' + ISNULL(CAST(Display AS VARCHAR(4)),'NULL') + ')'
        FROM dbo.Table

        EXECUTE xp_cmdshell 'BCP "SELECT * FROM DB.dbo.ScriptTemp" queryout "\\FileSharePath\Script.sql" -T -c -SSERVER'

        DROP TABLE ScriptTemp
END
Run Code Online (Sandbox Code Playgroud)

这会创建一个包含表格和数据的脚本(我从Bill Fellows创建的类似脚本中获得了这个想法).无论如何,这个解决方案也有效,对于熟悉TSQL的人来说非常方便.再次感谢所有回答的人.

and*_*rsh 3

您应该查看SQL Server 管理对象 (SMO)。我之前曾使用它在 .NET 应用程序中创建自定义脚本,但我不确定它是否支持数据脚本。

来自 MSDN:

SQL Server 管理对象 (SMO) 是为 Microsoft SQL Server 的编程管理而设计的对象。您可以使用 SMO 构建自定义的 SQL Server 管理应用程序。

  • SMO 确实支持脚本数据。请参阅此处的示例:http://stackoverflow.com/questions/5365408/c-sharp-smo-scripting-table-data-to-file- throwing-error (2认同)