Per questo non è possibile utilizzare un esplicito BACKUP DATABASE
. Comunque potresti fare qualcosa del genere - tuttavia tieni presente che, come nel mio commento, questi dati saranno di uso limitato se ti affidi a qualsiasi tipo di integrità dei dati poiché l'ordine sarà relativamente arbitrario e a meno che tutto sia 1: 1 e vi capita di avere magicamente conveniente ordinamento su tutte le query sarà solo una massiccia miscuglio dei dati:
CREATE DATABASE copy_of_original;
GO
USE original_db;
GO
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
-- this assumes all tables are in `dbo` schema:
SELECT @sql = @sql + CHAR(13) + CHAR(10)
+ 'SELECT TOP (100) * INTO copy_of_original.dbo.'
+ QUOTENAME(name) + ' FROM dbo.' + QUOTENAME(name) + ';'
FROM sys.tables
WHERE schema_id = 1;
PRINT @sql;
-- EXEC sp_executesql @sql;
una volta fatto questo, è possibile il backup copy_of_original
- ma tenete a mente che non avrà qualsiasi indici o vincoli presenti nel database originale, e che TOP
avrà scelto un insieme arbitrario di 100 righe da ogni tabella (o l'intera tabella, per tavolini con meno di 100 righe).
fonte
2012-06-06 12:45:36
Questo non è il backup, che è l'esportazione dei dati. Lo scopo principale di Backup è il disaster recovery, non ha senso limitare il numero di record. Cosa stai cercando di realizzare? Quali comandi/strumenti hai usato con MySQL? –
Mentre tecnicamente puoi farlo, come farai a utilizzare 100 righe da ogni tabella? Non c'è assolutamente alcuna integrità referenziale? (Ho il sospetto che non si poteva tirare 100 clienti e gli ordini 100 senza violare alcune integrità o la scrittura di dichiarazioni molto complesse.) –
Ha senso se si dispone di un database di 10 TB e solo bisogno di una versione semplice per lavorare su di esso. E per quanto ho trovato, non esiste una soluzione semplice per SQL Server – Salim