我正在设置新的测试服务器以迁移到 SQL Server 2017。由于某些原因,我无法选择为 SQL 二进制文件设置单独的驱动器分区,因此我的选择是将 SQL 二进制文件放在 C:\ 上默认分配单元大小或带有 64k 分配单元大小的 G:\ 以及数据文件。
我宁愿避免使用 C:\ 并将二进制文件放在 G:\ 上,但不确定将它们放在 64k 格式的磁盘上是否会对性能产生任何负面影响。
一个比另一个更好,还是对二进制文件没有任何影响?
我正在设置新的测试服务器以迁移到 SQL Server 2017。由于某些原因,我无法选择为 SQL 二进制文件设置单独的驱动器分区,因此我的选择是将 SQL 二进制文件放在 C:\ 上默认分配单元大小或带有 64k 分配单元大小的 G:\ 以及数据文件。
我宁愿避免使用 C:\ 并将二进制文件放在 G:\ 上,但不确定将它们放在 64k 格式的磁盘上是否会对性能产生任何负面影响。
一个比另一个更好,还是对二进制文件没有任何影响?
我正在测试这个新参数@DatabasesInParallel
,它似乎一次只能备份 1 个数据库,但它没有将此作为文档中的限制进行具体说明,所以我想知道我是否做错了什么。
我设置了 4 个数据库,我手动运行以下 4 个命令:
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'AdminDB',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Pop',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_StackOverflow2010',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_SUPERUSER',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
当我检查 QueueDatabase 表时,我可以看到所有 4 个数据库的 DatabaseOrder 和 RequestStartTime 列完全相同。但是,当您查看 DatabaseStartTime 列时,它显示前 2 个数据库同时启动,然后接下来的 2 个数据库直到第二个数据库完成其备份和验证检查后才启动。
这是我使用的参数的预期功能吗?我希望使用此参数同时启动所有 4 个数据库。
编辑 11/14:更新了帖子的标题/措辞
原始帖子说它一次只备份 2 个数据库,但实际上一次只备份 1 个数据库。在我的测试中备份的第一个数据库非常小,以至于我没有意识到它几乎立即完成,而第二个开始。但是你可以看到这个
我们有一个新的应用程序,其中包括 ETL 脚本、R 和 .NET 代码,所有这些代码都在 SQL 2016 架构上积极开发。
我最近刚刚获准开始使用 SQL 2017 设置新环境。
我想了解是否有任何代码迁移相关的更改可能需要为 SQL 2017 安装进行,或者在 SQL 2017 上运行 SQL 2016 数据库兼容模式的行为与它只是一个 SQL 2016 安装运行一样完整的 SQL 2016 (130) 兼容模式?
阅读此链接后,我发现了以下内容
要将SQL Server 数据库引擎升级到最新版本,同时保持升级前存在的数据库兼容性级别及其可支持性状态,建议对数据库中的应用程序代码进行静态功能表面积验证,使用Microsoft数据迁移助手工具 (DMA)。DMA 工具输出中没有关于缺失或不兼容功能的错误,可以保护应用程序免受新目标版本的任何功能回归。
假设此检查通过,还有什么我应该做或看的吗?
我正在使用以下查询来检查表上的索引碎片。每个索引返回 3 行,每一行都有不同的“avg_fragmentation_in_percent”值。当我通过实际索引的属性菜单检查索引碎片时,第二行似乎是准确的值。
我对返回的其他值很好奇,因为一行表示 100% 碎片而另一行表示 0% 碎片。有谁知道我为什么会看到这个?
DECLARE @db_id SMALLINT;
DECLARE @object_id INT;
SET @db_id = DB_ID(N'wfm');
SET @object_id = OBJECT_ID(N'wfm.dbo.Lab_Employee_Time_Off');
IF @db_id IS NULL
BEGIN;
PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN;
PRINT N'Invalid object';
END;
ELSE
BEGIN;
SELECT OBJECT_NAME(ips.OBJECT_ID) AS 'TableName'
,i.NAME AS 'IndexName'
,ips.index_id
,ips.index_type_desc
,ips.avg_fragmentation_in_percent
,ips.avg_page_space_used_in_percent
,ips.page_count
FROM sys.dm_db_index_physical_stats(@db_id, @object_id, NULL, NULL, 'DETAILED') ips
INNER JOIN sys.indexes i ON (ips.object_id = i.object_id)
AND (ips.index_id = i.index_id)
ORDER BY i.name, avg_fragmentation_in_percent DESC
END;
GO