USE Name;--要备份的数据库名
GO
-- 创建临时数据库
CREATE DATABASE TempDatabase;
GO
-- 复制需要备份的表到临时数据库
DECLARE @TableName NVARCHAR(128)
DECLARE @SQL NVARCHAR(MAX) = ''
DECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
--要备份去除的表!!!!!!!!!!!!!!!!!!!!!
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT IN ('Table1', 'Table2')
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
--要备份去除的表!!!!!!!!!!!!!!!!!!!!!
BEGIN
SET @SQL = @SQL + 'IF OBJECT_ID(''' + @TableName + ''') NOT IN (OBJECT_ID(''[dbo].[Table1]''), OBJECT_ID(''[dbo].[Table2]''))
BEGIN
EXEC(''SELECT * INTO TempDatabase.dbo.' + @TableName + ' FROM ' + @TableName + ';'')
END; '
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
EXEC sp_executesql @SQL
-- 备份临时数据库
BACKUP DATABASE TempDatabase
TO DISK = 'C:\SalesFiles123.bak'
WITH COPY_ONLY, FORMAT;
GO
-- 删除临时数据库
DROP DATABASE TempDatabase;
GO
SQL Server备份数据库时,剔除某表
最新推荐文章于 2024-10-16 11:14:53 发布