我想备份包含所有对象和数据的 SQL Server 数据库,但所有表中的数据应限制为每个表 100 行。我可以在 mysql 中很容易地做到这一点,但在 SQL Server 中我不知道该怎么做?
你不能真正使用显式的BACKUP DATABASE
为了这。然而你可以做这样的事情 - 但请记住 - 正如我的评论 - 如果你依赖任何类型的数据完整性,则该数据的用途将受到限制,因为排序将相对任意,除非一切都是 1:1并且您碰巧可以对所有查询进行神奇而方便的排序,这将是一个巨大的数据大杂烩:
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;
完成此操作后,您可以备份copy_of_original
- 但请记住,它不会具有原始数据库中存在的任何索引或约束,并且TOP
将从每个表(或整个表,对于少于 100 行的小表)中选择任意一组 100 行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)