簡體   English   中英

復制SQL Server數據庫以進行開發,但規模較小

[英]Copy SQL Server database for development but smaller

我們擁有100Gig以上的生產數據庫。 我想復制此數據庫並將其提供給每個開發人員以測試其代碼,但是大小太大。 無論如何,我只能用FK備份前1000行並將其恢復到新的數據庫嗎? 或先復制數據庫,然后刪除所有表中的所有記錄,但使用FK保留1000行或以其他任何方式將大小保持在5Gig以下。

我確實進行了搜索,但沒有解決方案針對具有外鍵的表。

謝謝,Basheer

這個想法:

第一:

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

此存儲的Proc已通過測試。

祝好運

github上有許多項目試圖做到這一點:創建一個保留引用完整性的子集。 這是一個這樣的項目:

https://github.com/18F/rdbms-subsetter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM