我们有100Gig以上的生产数据库。我想复制这个数据库并将其交给每个开发人员来测试它的代码,但是它的大小太大了。无论如何,我可以用FK备份前1000行并将其恢复到新的数据库?或者首先复制数据库并删除所有表中的所有记录,但保留1000行FK&s或其他任何方式将大小保持在5Gig以下。
我进行了搜索,但没有解决方案适用于具有外键的表。
谢谢, BASHEER
答案 0 :(得分:1)
这是IDEA:
<强>首先强>
Create new database:
<强>第二强> 选择小记录只有:
select top 500 from allYourTables
then insert to each every table to your new Database Created.
<强>第三强>
Dump the new database and give to its every developer
希望有所帮助:
假设您有一个新的db_to_dev
数据库名称,并且您正在使用当前数据库:
此过程将插入工作数据库中的所有数据,确保您已创建数据库。 db_to_dev
:
使用Information_Schema
您可以选择所有表格:
CREATE PROCEDURE PROC_TRANSFER_DATA @NUM_OF_RECORDS nvarchar(255) as
BEGIN
SET NOCOUNT ON;
DECLARE @message varchar(80), @tablename nvarchar(50);
Declare @sqlstmt nvarchar(255);
PRINT '-------- List of tables --------';
DECLARE Schema_cursor CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
OPEN Schema_cursor
FETCH NEXT FROM Schema_cursor INTO @tablename
IF @@FETCH_STATUS <> 0
PRINT ' <<None>>'
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @message = ' ' + @tablename
set @sqlstmt = 'select top ' + @NUM_OF_RECORDS + ' * into [db_to_dev].[dbo].['+ @tablename +'] from ' + @tablename;
EXEC sp_executesql @sqlstmt
PRINT @message
FETCH NEXT FROM Schema_cursor INTO @tablename
END
CLOSE Schema_cursor
DEALLOCATE Schema_cursor
END
使用:
使用选项参数:
EXEC PROC_TRANSFER_DATA '500'
如果要将多少条记录传输到新数据库db_to_dev
,参数值取决于您。
此存储过程已经过测试。
祝你好运答案 1 :(得分:0)
github上有许多项目正在寻求这样做:制作一个保留参照完整性的子集。这是一个这样的项目: