`
sjk2013
  • 浏览: 2186272 次
文章分类
社区版块
存档分类
最新评论

分享:sp_table_copy 根据旧表创建新表,并去掉IDENTITY属性。

 
阅读更多
USE master
go 

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
IF OBJECT_ID('sp_table_copy','P') IS NOT NULL 
DROP PROC sp_table_copy
go 
CREATE PROCEDURE sp_table_copy
    (
      @table NVARCHAR(128) ,
      @table_new NVARCHAR(128),
      @is_identity CHAR(1) = 'N' 
    )
AS 
    IF OBJECT_ID(@table, 'U') IS NULL 
        BEGIN 
            SELECT  '不存在表:' + @table AS return_result 
            RETURN
        END 
    IF @is_identity NOT IN ('Y','N')
        BEGIN 
            SELECT  '@is_identity:只能是Y或N'   AS return_result 
            RETURN
        END 
    DECLARE @sql NVARCHAR(MAX)
    SET @sql = ' SELECT TOP (0) '
    IF @is_identity = 'N'
    SET @sql = @sql
        + STUFF(( SELECT    ',' + ( CASE WHEN is_identity = 1 THEN ' 0 + ' + name + ' AS ' + name + '' ELSE '' + name + '' END )
                  FROM      sys.columns
                  WHERE     object_id = OBJECT_ID(@table, 'U')
                FOR
                  XML PATH('')
                ), 1, 1, '') + CHAR(13) + CHAR(10) + ' INTO ' + @table_new + CHAR(13) + CHAR(10) + 
                ' FROM ' + @table + ''
                    ELSE  
        SET @sql = @sql
        + STUFF(( SELECT    ',' + '' + name + '' 
                  FROM      sys.columns
                  WHERE     object_id = OBJECT_ID(@table, 'U')
                FOR
                  XML PATH('')
                ), 1, 1, '') + CHAR(13) + CHAR(10) + ' INTO ' + @table_new + CHAR(13) + CHAR(10) + 
                ' FROM ' + @table + ''
                          
    PRINT @sql 
    IF object_id(@table_new,'U') IS NULL 
    EXEC sp_executesql @sql 
	
GO
EXEC sp_MS_marksystemobject 'sp_table_copy'

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics