No se puede usar realmente un BACKUP DATABASE
explícito para esto. Sin embargo, podría hacer algo como esto, pero tenga en cuenta que, como en mi comentario, estos datos serán de uso limitado si confía en cualquier tipo de integridad de datos, ya que el orden será relativamente arbitrario y, a menos que todo sea 1: 1 y usted sucede conseguir la clasificación mágicamente conveniente en todas las consultas que sólo será una mezcolanza masiva de datos:
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 vez que haya terminado esto, se puede copia de seguridad copy_of_original
- pero tenga en cuenta que no tendrá cualquiera de los índices o restricciones presentes en la base de datos original, y que TOP
habrá elegido un conjunto arbitrario de 100 filas de cada tabla (o la tabla completa, para tablas pequeñas con menos de 100 filas).
Eso no es copia de seguridad, eso es exportar los datos. El propósito principal de la copia de seguridad es la recuperación de desastres, no tiene sentido limitar la cantidad de registros. ¿Qué está tratando de lograr? ¿Qué comandos/herramientas usaste con MySQL? –
Si bien técnicamente puedes hacer esto, ¿cómo vas a utilizar 100 filas de cada tabla? ¿No hay absolutamente ninguna integridad referencial en absoluto? (Sospecho que no podría obtener 100 clientes y 100 pedidos sin violar la integridad ni redactar declaraciones muy complejas.) –
Tiene sentido si tiene una base de datos de 10 TB y solo necesita una versión simple para trabajar en ella. Y por lo que he encontrado, no hay una solución fácil para SQL Server – Salim