按脚本创建一些自定义SQL表克隆

时间:2018-01-13 08:44:59

标签: sql sql-server stored-procedures

在Asp.net项目中,我需要一个沙盒环境,以便用户能够测试进程而不会有任何损害数据库的风险,所以我想创建一个存储过程来创建一种数据库克隆,其中一些表带有数据,有些表没有任何数据,我认为它应该是一个存储过程,它将表名作为参数,另一个布尔参数确定是否应该使用数据或只是表结构来复制表如果它也考虑了观点,它会更好。

我已经在这个网站上阅读了一些文章和一些Q& A,如this one创建数据库备份,然后通过另一个名称将其恢复为克隆数据库,我甚至在here中阅读了有关DBCC的文章但是他们都没有提供我倾向于拥有的这样一个定制的剧本。

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试此程序。将表名传递给变量@TableName和' Y'如果要移动数据,请变量@WithDate' N'如果您没有指定任何值,则会将其视为' Y'默认情况下

CREATE PROCEDURE dbo.sProc_MoveTable
(
    @TableName VARCHAR(255),
    @WithData CHAR(1) = 'Y'
)   
AS
BEGIN

    DECLARE @Sql VARCHAR(MAX)

    SELECT
        @sql = 'SELECT 
                    * 
                    INTO [DestDatabase].[dbo].['+LTRIM(RTRIM(@TableName))+']
                    FROM [SourceDatabase].[dbo].['+LTRIM(RTRIM(@TableName))+'] 
                        WHERE '
                        +CASE @WithData WHEN 'Y'
                            THEN ' 1=1'
                        ELSE ' 1=0 ' END

    PRINT @sql

    EXEC(@sql)

END
GO