如何在同一服务器上创建现有SQL DB的副本

问题描述 投票:0回答:1

我要执行一项操作,我需要寻找一种在同一服务器上创建SQL DB副本的方法。我尝试了Copy SQL Server database with PowerShell script给出的建议。但是,生成的副本大约是实际数据库的四分之一。

有想法吗?

谢谢

sql-server powershell
1个回答
0
投票

如果您的PowerShell解决方案正在工作,但您注意到与源数据库相比,新复制的数据库与文件大小存在差异,则可能不是实际问题。

SQL Server数据库和日志大小是可变的,通常不能精确表示它们包含的数据量。就复制的数据库而言,其磁盘文件使用情况可能会得到“优化”,而源数据库当前并未如此。

有两件事可以说服自己,您有一个可行的解决方案。

  1. 在两个数据库上运行收缩命令以释放空间,并查看生成的磁盘文件是否在大小https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-shrinkdatabase-transact-sql?view=sql-server-ver15方面更相似”>
  2. 编写一个基准脚本,该脚本比较所有表上的记录计数。如果您发现记录计数有差异,则说明您有问题。
  3. 示例基准脚本:

declare @sourceCount int;
declare @copyCount int;

set @sourceCount = (select count(*) from SourceDb.dbo.SomeTable);
set @copyCount = (select count(*) from CopyDb.dbo.SomeTable);

if @sourceCount <> @copyCount
begin
    select 'PROBLEM!'
end

-- Now repeat for all the other tables

但是,只有在您可以确保两个数据库在复制/基准测试过程中没有收到更新的情况下,这些方法才能可靠地工作。如果有人在测量时独立访问一个或另一个数据库,而他们在测量时独立地更改数据,则结果将无效,可能是您不知道。

© www.soinside.com 2019 - 2024. All rights reserved.