2017-09-12 2 views
0

Lorsque vous utilisez la fonction "Générer un script" dans MS SQL Management Studio, nous exportons également les données, mais toutes les valeurs sont insérées dans une étape distincte.Serveur MS SQL "Générer un script" avec des valeurs d'insertion dans une seule commande

INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (3, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 30 %', NULL, 13, 0) 
INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (4, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 40 %', NULL, 14, 0) 
INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (5, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 50 %', NULL, 15, 0) 
INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (6, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 60 %', NULL, 16, 0) 
INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (7, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 70 %', NULL, 17, 0) 
INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) VALUES (8, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 80 %', NULL, 18, 0) 

Est-il possible de faire cette génération de script et de forcer SSMS pour créer des requêtes d'insertion dans un seul ou plusieurs étapes plus importantes, comme:

INSERT [dbo].[table] ([table_id], [table_version], [table_timestamp], [table_user], [table_percent], [table_hid], [table_latestversionid], [table_isdeleted]) 
VALUES 
(3, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 30 %', NULL, 13, 0), 
(4, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 40 %', NULL, 14, 0), 
(5, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 50 %', NULL, 15, 0), 
(6, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 60 %', NULL, 16, 0), 
(7, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 70 %', NULL, 17, 0), 
(8, -1, CAST(N'2015-06-04 13:03:38.000' AS DateTime), N'init', N' 80 %', NULL, 18, 0); 

Merci

+4

'VALUES' a une limite de 1000 lignes (peut-être sujet à changement dans les versions plus récentes), donc une telle fonctionnalité serait d'une utilité limitée pour commencer. Je vais parier que l'argent n'a pas été construit. Vous pouvez réaliser l'effet vous-même de manière triviale en remplaçant la plaquette de recherche, mais pour obtenir une performance quelconque en insérant les données, l'approche du script entier doit être abandonnée au profit des données de copie en masse. (En outre, envelopper les instructions existantes dans un BEGIN TRANSACTION ... COMMIT a des avantages, car ce sont les commits séparés et non la taille de l'instruction qui rend cette fonction inefficace.) –

+1

Le deuxième script a une limitation en 1000 lignes, peut-être pourquoi ils ne font pas comme ça –

+0

Eh bien, MySQL avait cela car je ne me souviens pas quand, mais MSSQL préfère les fichiers de script garbage. Pitié. – Romczyk

Répondre

1
--First Create The SP GenerateInsert The Run The Below Mention CODE Which will give the Desire Output.. 

     IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.GenerateInsert') AND type in (N'P', N'PC')) 
     DROP PROCEDURE dbo.GenerateInsert; 
    GO 

    CREATE PROCEDURE dbo.GenerateInsert 
    (
     @ObjectName nvarchar(261) 
    , @TargetObjectName nvarchar(261) = NULL 
    , @OmmitInsertColumnList bit = 0 
    , @GenerateSingleInsertPerRow bit = 0 
    , @UseSelectSyntax bit = 0 
    , @UseColumnAliasInSelect bit = 0 
    , @FormatCode bit = 1 
    , @GenerateOneColumnPerLine bit = 0 
    , @GenerateGo bit = 0 
    , @PrintGeneratedCode bit = 1 
    , @TopExpression nvarchar(max) = NULL 
    , @FunctionParameters nvarchar(max) = NULL 
    , @SearchCondition nvarchar(max) = NULL 
    , @OrderByExpression nvarchar(max) = NULL 
    , @OmmitUnsupportedDataTypes bit = 1 
    , @PopulateIdentityColumn bit = 0 
    , @PopulateTimestampColumn bit = 0 
    , @PopulateComputedColumn bit = 0 
    , @GenerateProjectInfo bit = 1 
    , @GenerateSetNoCount bit = 1 
    , @GenerateStatementTerminator bit = 1 
    , @ShowWarnings bit = 1 
    , @Debug bit = 0 
    ) 
    AS 

    BEGIN 
    SET NOCOUNT ON; 

    DECLARE @CrLf char(2) 
    SET @CrLf = CHAR(13) + CHAR(10); 
    DECLARE @ColumnName sysname; 
    DECLARE @DataType sysname; 
    DECLARE @ColumnList nvarchar(max); 
    SET @ColumnList = N''; 
    DECLARE @SelectList nvarchar(max); 
    SET @SelectList = N''; 
    DECLARE @SelectStatement nvarchar(max); 
    SET @SelectStatement = N''; 
    DECLARE @OmittedColumnList nvarchar(max); 
    SET @OmittedColumnList = N''; 
    DECLARE @InsertSql nvarchar(max); 
    SET @InsertSql = N'INSERT INTO ' + COALESCE(@TargetObjectName,@ObjectName); 
    DECLARE @ValuesSql nvarchar(max); 
    SET @ValuesSql = N'VALUES ('; 
    DECLARE @SelectSql nvarchar(max); 
    SET @SelectSql = N'SELECT '; 
    DECLARE @TableData table (TableRow nvarchar(max)); 
    DECLARE @Results table (TableRow nvarchar(max)); 
    DECLARE @TableRow nvarchar(max); 
    DECLARE @RowNo int; 

    IF PARSENAME(@ObjectName,3) IS NOT NULL 
     OR PARSENAME(@ObjectName,4) IS NOT NULL 
    BEGIN 
     RAISERROR(N'Server and database names are not allowed to specify in @ObjectName parameter. Required format is [schema_name.]object_name',16,1); 
     RETURN -1; 
    END 

    IF OBJECT_ID(@ObjectName,N'U') IS NULL -- USER_TABLE 
     AND OBJECT_ID(@ObjectName,N'V') IS NULL -- VIEW 
     AND OBJECT_ID(@ObjectName,N'IF') IS NULL -- SQL_INLINE_TABLE_VALUED_FUNCTION 
     AND OBJECT_ID(@ObjectName,N'TF') IS NULL -- SQL_TABLE_VALUED_FUNCTION 
    BEGIN 
     RAISERROR(N'User table, view, table-valued or inline function %s not found or insuficient permission to query the provided object.',16,1,@ObjectName); 
     RETURN -1; 
    END 

    IF NOT EXISTS (
     SELECT 1 
     FROM INFORMATION_SCHEMA.TABLES 
     WHERE TABLE_TYPE IN ('BASE TABLE','VIEW') 
     AND TABLE_NAME = PARSENAME(@ObjectName,1) 
     AND (TABLE_SCHEMA = PARSENAME(@ObjectName,2) 
      OR PARSENAME(@ObjectName,2) IS NULL) 
    ) AND NOT EXISTS (
     SELECT * 
     FROM INFORMATION_SCHEMA.ROUTINES 
     WHERE ROUTINE_TYPE IN ('FUNCTION') 
     AND DATA_TYPE = 'TABLE' 
     AND SPECIFIC_NAME = PARSENAME(@ObjectName,1) 
     AND (SPECIFIC_SCHEMA = PARSENAME(@ObjectName,2) 
      OR PARSENAME(@ObjectName,2) IS NULL) 
    ) 
    BEGIN 
     RAISERROR(N'User table, view, table-valued or inline function %s not found or insuficient permission to query the provided object.',16,1,@ObjectName); 
     RETURN -1; 
    END 

    DECLARE ColumnCursor CURSOR LOCAL FAST_FORWARD FOR 
    SELECT c.name ColumnName 
    ,COALESCE(TYPE_NAME(c.system_type_id),t.name) DataType 
    FROM sys.objects o 
     INNER JOIN sys.columns c ON c.object_id = o.object_id 
     LEFT JOIN sys.types t ON t.system_type_id = c.system_type_id 
     AND t.user_type_id = c.user_type_id 
    WHERE o.type IN (N'U',N'V',N'IF',N'TF') 
     -- U = USER_TABLE 
     -- V = VIEW 
     -- IF = SQL_INLINE_TABLE_VALUED_FUNCTION 
     -- TF = SQL_TABLE_VALUED_FUNCTION 
     AND (o.object_id = OBJECT_ID(@ObjectName) 
     OR o.name = @ObjectName) 
     AND (COLUMNPROPERTY(c.object_id,c.name,'IsIdentity') != 1 
     OR @PopulateIdentityColumn = 1) 
     AND (COLUMNPROPERTY(c.object_id,c.name,'IsComputed') != 1 
     OR @PopulateComputedColumn = 1) 
    ORDER BY COLUMNPROPERTY(c.object_id,c.name,'ordinal') -- ORDINAL_POSITION 
    FOR READ ONLY 
    ; 
    OPEN ColumnCursor; 
    FETCH NEXT FROM ColumnCursor INTO @ColumnName,@DataType; 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 
     -- Handle different data types 
     DECLARE @ColumnExpression nvarchar(max); 
     SET @ColumnExpression = 
     CASE 
     WHEN @DataType IN ('char','varchar','text','uniqueidentifier') 
     THEN N'ISNULL(''''''''+REPLACE(CONVERT(varchar(max),'+ QUOTENAME(@ColumnName) + N'),'''''''','''''''''''')+'''''''',''NULL'') COLLATE database_default' 

     WHEN @DataType IN ('nchar','nvarchar','sysname','ntext','sql_variant','xml') 
     THEN N'ISNULL(''N''''''+REPLACE(CONVERT(nvarchar(max),'+ QUOTENAME(@ColumnName) + N'),'''''''','''''''''''')+'''''''',''NULL'') COLLATE database_default' 

     WHEN @DataType IN ('int','bigint','smallint','tinyint','decimal','numeric','bit') 
     THEN N'ISNULL(CONVERT(varchar(max),'+ QUOTENAME(@ColumnName) + N'),''NULL'') COLLATE database_default' 

     WHEN @DataType IN ('float','real','money','smallmoney') 
     THEN N'ISNULL(CONVERT(varchar(max),'+ QUOTENAME(@ColumnName) + N',2),''NULL'') COLLATE database_default' 

     WHEN @DataType IN ('datetime','smalldatetime','date','time','datetime2','datetimeoffset') 
     THEN N'''CONVERT('[email protected]+',''+ISNULL(''''''''+CONVERT(varchar(max),'+ QUOTENAME(@ColumnName) + N',121)+'''''''',''NULL'') COLLATE database_default' + '+'',121)''' 

     WHEN @DataType IN ('rowversion','timestamp') 
     THEN 
      CASE WHEN @PopulateTimestampColumn = 1 
      THEN N'''CONVERT(varbinary(max),''+ISNULL(''''''''+CONVERT(varchar(max),CONVERT(varbinary(max),'+ QUOTENAME(@ColumnName) + N'),1)+'''''''',''NULL'') COLLATE database_default' + '+'',1)''' 
      ELSE N'''NULL''' END 

     WHEN @DataType IN ('binary','varbinary','image') 
     THEN N'''CONVERT(varbinary(max),''+ISNULL(''''''''+CONVERT(varchar(max),CONVERT(varbinary(max),'+ QUOTENAME(@ColumnName) + N'),1)+'''''''',''NULL'') COLLATE database_default' + '+'',1)''' 

     WHEN @DataType IN ('geography') 
     -- convert geography to text: ?? column.STAsText(); 
     -- convert text to geography: ?? geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326); 
     THEN NULL 

     ELSE NULL END; 

     IF @ColumnExpression IS NULL 
     AND @OmmitUnsupportedDataTypes != 1 
     BEGIN 
     RAISERROR(N'Datatype %s is not supported. Use @OmmitUnsupportedDataTypes to exclude unsupported columns.',16,1,@DataType); 
     RETURN -1; 
     END 

     IF @ColumnExpression IS NULL 
     BEGIN 
     SET @OmittedColumnList = @OmittedColumnList 
      + CASE WHEN @OmittedColumnList != N'' THEN N'; ' ELSE N'' END 
      + N'column ' + QUOTENAME(@ColumnName) 
      + N', datatype ' + @DataType; 
     END 

     IF @ColumnExpression IS NOT NULL 
     BEGIN 
     SET @ColumnList = @ColumnList 
      + CASE WHEN @ColumnList != N'' THEN N',' ELSE N'' END 
      + QUOTENAME(@ColumnName) 
      + CASE WHEN @GenerateOneColumnPerLine = 1 THEN @CrLf ELSE N'' END; 

     SET @SelectList = @SelectList 
      + CASE WHEN @SelectList != N'' THEN N'+'',''+' + @CrLf ELSE N'' END 
      + @ColumnExpression 
      + CASE WHEN @UseColumnAliasInSelect = 1 AND @UseSelectSyntax = 1 THEN N'+'' ' + QUOTENAME(@ColumnName) + N'''' ELSE N'' END 
      + CASE WHEN @GenerateOneColumnPerLine = 1 THEN N'+CHAR(13)+CHAR(10)' ELSE N'' END; 
     END 

     FETCH NEXT FROM ColumnCursor INTO @ColumnName,@DataType; 
    END 

    CLOSE ColumnCursor; 
    DEALLOCATE ColumnCursor; 

    IF NULLIF(@ColumnList,N'') IS NULL 
    BEGIN 
     RAISERROR(N'No columns to select.',16,1); 
     RETURN -1; 
    END 

    IF @Debug = 1 
    BEGIN 
     PRINT(N'--Column list'); 
     PRINT(@ColumnList); 
    END 

    IF NULLIF(@OmittedColumnList,'') IS NOT NULL 
     AND @ShowWarnings = 1 
    BEGIN 
     PRINT(N'--*************************'); 
     PRINT(N'--WARNING: The following columns have been omitted because of unsupported datatypes: ' + @OmittedColumnList); 
     PRINT(N'--*************************'); 
    END 

    IF @GenerateSingleInsertPerRow = 1 
    BEGIN 
     SET @SelectList = 
     N'''' + @InsertSql + N'''+' + @CrLf 
     + CASE WHEN @FormatCode = 1 
      THEN N'CHAR(13)+CHAR(10)+' + @CrLf 
      ELSE N''' ''+' 
      END 
     + CASE WHEN @OmmitInsertColumnList = 1 
      THEN N'' 
      ELSE N'''(' + @ColumnList + N')''+' + @CrLf 
      END 
     + CASE WHEN @FormatCode = 1 
      THEN N'CHAR(13)+CHAR(10)+' + @CrLf 
      ELSE N''' ''+' 
      END 
     + CASE WHEN @UseSelectSyntax = 1 
      THEN N'''' + @SelectSql + N'''+' 
      ELSE N'''' + @ValuesSql + N'''+' 
      END 
     + @CrLf 
     + @SelectList 
     + CASE WHEN @UseSelectSyntax = 1 
      THEN N'' 
      ELSE N'+' + @CrLf + N''')''' 
      END 
     + CASE WHEN @GenerateStatementTerminator = 1 
      THEN N'+'';''' 
      ELSE N'' 
      END 
     + CASE WHEN @GenerateGo = 1 
      THEN N'+' + @CrLf + N'CHAR(13)+CHAR(10)+' + @CrLf + N'''GO''' 
      ELSE N'' 
      END 
     ; 
    END ELSE BEGIN 
     SET @SelectList = 
     CASE WHEN @UseSelectSyntax = 1 
      THEN N'''' + @SelectSql + N'''+' 
      ELSE N'''(''+' 
      END 
     + @CrLf 
     + @SelectList 
     + CASE WHEN @UseSelectSyntax = 1 
      THEN N'' 
      ELSE N'+' + @CrLf + N''')''' 
      END 
     ; 
    END 

    SET @SelectStatement = N'SELECT' 
     + CASE WHEN NULLIF(@TopExpression,N'') IS NOT NULL 
     THEN N' TOP ' + @TopExpression 
     ELSE N'' END 
     + @CrLf + @SelectList + @CrLf 
     + N'FROM ' + @ObjectName 
     + CASE WHEN NULLIF(@FunctionParameters,N'') IS NOT NULL 
     THEN @FunctionParameters 
     ELSE N'' END 
     + CASE WHEN NULLIF(@SearchCondition,N'') IS NOT NULL 
     THEN @CrLf + N'WHERE ' + @SearchCondition 
     ELSE N'' END 
     + CASE WHEN NULLIF(@OrderByExpression,N'') IS NOT NULL 
     THEN @CrLf + N'ORDER BY ' + @OrderByExpression 
     ELSE N'' END 
     + @CrLf + N';' + @CrLf + @CrLf 
    ; 

    IF @Debug = 1 
    BEGIN 
     PRINT(@CrLf + N'--Select statement'); 
     PRINT(@SelectStatement); 
    END 

    INSERT INTO @TableData 
    EXECUTE (@SelectStatement); 

    IF @GenerateProjectInfo = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT N'--INSERTs generated by GenerateInsert (Build 6)' 
     UNION SELECT N'' 
    END 

    IF @GenerateSetNoCount = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT N'SET NOCOUNT ON' 
    END 

    IF @PopulateIdentityColumn = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT N'SET IDENTITY_INSERT ' + COALESCE(@TargetObjectName,@ObjectName) + N' ON' 
    END 

    IF @GenerateSingleInsertPerRow = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT TableRow 
     FROM @TableData 
    END ELSE BEGIN 
     IF @FormatCode = 1 
     BEGIN 
     INSERT INTO @Results 
     SELECT @InsertSql; 

     IF @OmmitInsertColumnList != 1 
     BEGIN 
      INSERT INTO @Results 
      SELECT N'(' + @ColumnList + N')'; 
     END 

     IF @UseSelectSyntax != 1 
     BEGIN 
      INSERT INTO @Results 
      SELECT N'VALUES'; 
     END 
     END ELSE BEGIN 
     INSERT INTO @Results 
     SELECT @InsertSql 
      + CASE WHEN @OmmitInsertColumnList = 1 THEN N'' ELSE N' (' + @ColumnList + N')' END 
      + CASE WHEN @UseSelectSyntax = 1 THEN N'' ELSE N' VALUES' END 
     END 

     SET @RowNo = 0; 
     DECLARE DataCursor CURSOR LOCAL FAST_FORWARD FOR 
     SELECT TableRow 
     FROM @TableData 
     FOR READ ONLY 
     ; 
     OPEN DataCursor; 
     FETCH NEXT FROM DataCursor INTO @TableRow; 

     WHILE @@FETCH_STATUS = 0 
     BEGIN 
     SET @RowNo = @RowNo + 1; 

     INSERT INTO @Results 
     SELECT 
      CASE WHEN @UseSelectSyntax = 1 
      THEN CASE WHEN @RowNo > 1 THEN N'UNION' + CASE WHEN @FormatCode = 1 THEN @CrLf ELSE N' ' END ELSE N'' END 
      ELSE CASE WHEN @RowNo > 1 THEN N',' ELSE N' ' END END 
      + @TableRow; 

     FETCH NEXT FROM DataCursor INTO @TableRow; 
     END 

     CLOSE DataCursor; 
     DEALLOCATE DataCursor; 

     IF @GenerateStatementTerminator = 1 
     BEGIN 
     INSERT INTO @Results 
     SELECT N';'; 
     END 

     IF @GenerateGo = 1 
     BEGIN 
     INSERT INTO @Results 
     SELECT N'GO'; 
     END 
    END 

    IF @PopulateIdentityColumn = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT N'SET IDENTITY_INSERT ' + COALESCE(@TargetObjectName,@ObjectName) + N' OFF' 
    END 

    IF @FormatCode = 1 
    BEGIN 
     INSERT INTO @Results 
     SELECT N''; -- An empty line at the end 
    END 

    IF @PrintGeneratedCode = 1 
    BEGIN 
     DECLARE @LongRows bigint; 
     SET @LongRows = (SELECT COUNT(*) FROM @Results WHERE LEN(TableRow) > 4000); 

     IF @LongRows > 0 
     AND @ShowWarnings = 1 
     BEGIN 
     PRINT(N'--*************************'); 
     IF @LongRows = 1 
      PRINT(N'--WARNING: ' + CONVERT(nvarchar(max), @LongRows) + N' Row is very long and will be chopped at every 4000 character.') 
     ELSE 
      PRINT(N'--WARNING: ' + CONVERT(nvarchar(max), @LongRows) + N' Rows are very long and will be chopped at every 4000 character.'); 
     PRINT(N'-- If this is an issue then the workaround is to use @PrintGeneratedCode = 0 and output "Result to Grid" in SSMS.'); 
     PRINT(N'--*************************'); 
     END 

     DECLARE ResultsCursor CURSOR LOCAL FAST_FORWARD FOR 
     SELECT TableRow 
     FROM @Results 
     FOR READ ONLY 
     ; 
     OPEN ResultsCursor; 
     FETCH NEXT FROM ResultsCursor INTO @TableRow; 

     WHILE @@FETCH_STATUS = 0 
     BEGIN 

     DECLARE @CurrentEnd bigint; -- track the length of the next sub-string 
     DECLARE @Offset tinyint; -- tracks the amount of offset needed 
     SET @TableRow = REPLACE(REPLACE(@TableRow, CHAR(13) + CHAR(10), CHAR(10)), CHAR(13), CHAR(10)); 

     WHILE LEN(@TableRow) > 1 
     BEGIN 
      IF CHARINDEX(CHAR(10), @TableRow) BETWEEN 1 AND 4000 
      BEGIN 
      SET @CurrentEnd = CHARINDEX(CHAR(10), @TableRow) - 1; 
      SET @Offset = 2; 
      END 
      ELSE 
      BEGIN 
      SET @CurrentEnd = 4000; 
      SET @Offset = 1; 
      END 

      PRINT(SUBSTRING(@TableRow, 1, @CurrentEnd)); 
      SET @TableRow = SUBSTRING(@TableRow, @CurrentEnd + @Offset, LEN(@TableRow)) 
     END 

     FETCH NEXT FROM ResultsCursor INTO @TableRow; 
     END 

     CLOSE ResultsCursor; 
     DEALLOCATE ResultsCursor; 
    END ELSE BEGIN 
     SELECT * 
     FROM @Results; 
    END 

    END 
    GO 
----============================== 
--ONCE SP Created run The following Code With Table_Name.. 


DECLARE @Name NVARCHAR(261)='Table_Name'; 
DECLARE TableCursor CURSOR LOCAL FAST_FORWARD FOR 
SELECT QUOTENAME(s.name) + '.' + QUOTENAME(t.name) ObjectName 
FROM sys.tables t 
    INNER JOIN sys.schemas s ON s.schema_id = t.schema_id 
WHERE t.name NOT LIKE 'sys%' AND t.name='Table_Name' 
FOR READ ONLY 
; 
OPEN TableCursor; 
FETCH NEXT FROM TableCursor INTO @Name; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    EXECUTE dbo.GenerateInsert @ObjectName = @Name; 

    FETCH NEXT FROM TableCursor INTO @Name; 
END 

CLOSE TableCursor; 
DEALLOCATE TableCursor; 
+1

Pour cela, vous devez créer une requête dynamique avec Union tout ce qui vous permettra d'insérer toutes les données. –

+0

Je pense que vous n'avez pas bien compris ma question. Je sais comment faire une requête. Je veux que SSMS fasse cette requête sans répéter 'INSERT' – Romczyk

+0

J'ai eu Modifier les années Regardez, vous aurez votre sortie désir –