仅复制SQL Server中每个表的单个记录

时间:2018-05-16 16:43:18

标签: sql sql-server

我想将表从一个数据库/服务器复制到另一个数据库/服务器。要求是,在将表复制到目的地时,我只需要每个表中的一条记录(作为样本记录)。

尝试了数据迁移选项,但没有一个选项可以限制记录数量。

任何建议将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

不确定这是否完全回答了问题,但这是一个开始

SELECT ' SELECT TOP 1 * FROM ' + QUOTENAME(s.NAME) + '.' + QUOTENAME(t.NAME) + '; '
FROM   sys.tables t
   JOIN sys.schemas s
     ON t.[schema_id] = s.[schema_id]
WHERE  t.type = 'U'

这将为系统中的每个表生成一个select查询(用户表)。

如果您需要执行这些语句,可以试试这个(如果您有很多表,则不方便):

DECLARE @sql nvarchar(max) = ''
SELECT @sql+=' SELECT TOP 1 * FROM ' + QUOTENAME(s.NAME) + '.' +   QUOTENAME(t.NAME) + '; '
FROM   sys.tables t
   JOIN sys.schemas s
     ON t.[schema_id] = s.[schema_id]
WHERE  t.type = 'U';

Exec sp_executesql @sql;

其他解决方案是遵循this answer