用第三方工具:SQL Server 数据库脚本导出器 v1.0.0.1 
http://www.678e.cn/SoftView/SoftView_8581.htmlSQL Server 数据库脚本导出器 v2.0 
http://www.678e.cn/SoftView/SoftView_8582.html

解决方案 »

  1.   

    select 'insert into t1(fid,fvalue) values('+convert(varchar(8),fid)+','+''''+fvalue+''')'
    from t1
      

  2.   

    --我自己写的.if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[uf_GetFieldStr]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[uf_GetFieldStr]
    GO SET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO--给非数字和非空字符串加引号
    CREATE function dbo.uf_GetFieldStr(@Field varCHAR(8000))  -- SELECT '1' + dbo.uf_GetFieldStr('1900-1-1')
    RETURNS varCHAR(8000)
    AS
    BEGIN
     DECLARE @ResultStr varCHAR(8000)
     IF @Field = 'NULL' 
     BEGIN
      SET @ResultStr = @Field
     END
     ELSE
     BEGIN
      SET @ResultStr = '''' + @Field + ''''
     END
     RETURN(@ResultStr)
    END
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[up_GetDatascript]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[up_GetDatascript]
    GOSET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO--转换一个表的数据为脚本
    CREATE PROC up_GetDatascript  -- up_GetDatascript 'TableA'
    @TableName NvarCHAR(50)
    ASSET NOCOUNT ONDECLARE @FieldName NvarCHAR(50)
    DECLARE @InsSql NvarCHAR(4000)DECLARE FieldCursor CURSOR FOR 
    SELECT [name]
    FROM syscolumns sc
    WHERE id = object_id(N'[dbo].[' + @TableName + ']') and OBJECTPROPERTY(id, N'IsUserTable') = 1
    ORDER BY colidOPEN FieldCursorFETCH NEXT FROM FieldCursor INTO @FieldName
    SET @InsSql = 'SELECT ''INSERT INTO ' + @TableName + ' VALUES(''
    + dbo.uf_GetFieldStr(ISNULL(CAST(' + @FieldName + ' AS varCHAR(8000)), ''NULL''))'FETCH NEXT FROM FieldCursor INTO @FieldName
    WHILE @@FETCH_STATUS = 0
    BEGIN
     SET @InsSql = @InsSql + '
    + '', '' + dbo.uf_GetFieldStr(ISNULL(CAST(' + @FieldName + ' AS varCHAR(8000)), ''NULL''))'
     FETCH NEXT FROM FieldCursor INTO @FieldName
    ENDSET @InsSql = @InsSql + '
    + '')''
    FROM ' + @TableNameSET @InsSql = 'SELECT [--Initscript for table ' + @TableName + '] = ''TRUNCATE TABLE ' + @TableName + '''
    UNION ALL 
    '+@InsSqlEXEC(@InsSql)
    --IF @@ERROR > 0
    --BEGIN
    -- PRINT @InsSql
    --ENDCLOSE FieldCursor
    DEALLOCATE FieldCursorSET NOCOUNT OFF
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO