[英]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上有許多項目試圖做到這一點:創建一個保留引用完整性的子集。 這是一個這樣的項目:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.