SQL Server 可用性组备份首选项。
\n我们的 AG 有 3 个节点。
\n我想在主数据库上进行完整备份和差异备份,在辅助数据库上进行日志备份。
\n当我配置“任何副本”时,所有副本的备份优先级均为 50,日志备份不在辅助副本上运行。
\n如果我确实喜欢辅助完整备份,则不会在主数据库上运行。
\n如何配置为仅在主数据库上进行完整/差异备份并仅在辅助数据库上进行日志备份?
\n我们希望将备份卸载到辅助副本的原因是为了提高主副本在高峰时段的性能。
\n我们当前的设置每 3 天进行一次完整处理,并在每天下班后进行比较,我们\xe2\x80\x99ve 每 15 分钟运行一次日志备份。它通过具有自定义 SP 的 SQL 代理作业\xe2\x80\x99s。
\n我在 SQL Server 中遇到一个问题,其中非聚集索引查找的性能很差。
下面是实际的执行计划 https://www.brentozar.com/pastetheplan/?id=Sk3-4JGAK
我怎样才能提高绩效?
下面是表定义
CREATE TABLE [Parts].[ManufacturingData](
[LeadFinishId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[PartID] [int] NOT NULL,
[LeadFinishMaterial] [varchar](50) NULL,
[CreatedDate] [datetime] NULL,
[CreatedBy] [int] NULL,
[ModifiedDate] [datetime] NULL,
[Modifiedby] [int] NULL,
[DeletedDate] [datetime] NULL,
[DeletedBy] [int] NULL,
[Revision_Id] [int] NULL,
[BaseMaterialID] [int] NULL,
[MSLID] [int] NULL,
[MSLSource_Revision_id] [int] NULL,
[MaximumReflowTemperatureID] [int] NULL,
[ReflowTemperatureSource_Revision_Id] [int] NULL,
[MaximumWaveTemperatureID] [int] NULL,
[WaveTemperatureSource_Revision_ID] [int] NULL,
[ReflowSolderTimeID] [int] NULL,
[WaveSolderTimeID] [int] NULL,
[NumberOfReflowCycleID] [int] NULL,
[LeadFinishPlatingID] [int] NULL, …Run Code Online (Sandbox Code Playgroud) sql-server constraint stored-procedures execution-plan sql-server-2016
我需要在Sql Server上模拟错误:
\n\xe2\x80\x9cMsg 0, Level 20 A severe error occurred on the current command\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n因为我们的开发人员必须在应用程序中处理它。
\n我怎样才能模拟/触发这种错误?(我也可以在我的本地主机上尝试)。
\n我在查询存储中强制执行计划。计划与每天运行一次的作业中的过程相关联。这项工作的步骤之一就是:
EXEC [schema].[LoadData]
Run Code Online (Sandbox Code Playgroud)
过程 [schema].[LoadData] 看起来像
TRUNCATE TABLE [schema].[Data];
INSERT INTO [schema].[Data]
([A1],
[A2],
.
.
.,
[A49]
)
SELECT *
,CURRENT_TIMESTAMP AS [Insert TimeStamp]
FROM [schema].[View]
Run Code Online (Sandbox Code Playgroud)
其中 view 是包含一些 CTE 并使用同义词的视图(连接到来自不同数据库的表)。
为了测试强制计划是否有效,我按照以下步骤操作:
EXEC [schema].[LoadData]EXEC [schema].[LoadData]问题为什么执行计划没有被强制?在“强制计划失败计数”列中为 0。
MERGE 与 MERGE INTO 之间有什么区别?
每个的用例是什么?
令人惊讶的是,我找不到任何询问这种差异的现有问题。
MERGE的文档也没有解释这一点,并且它仅在似乎与该差异(如果有)无关的情况下使用一次。
场景:我已向开发团队授予数据库的 dbdatareader 访问权限。他们确实进行了每日数据库刷新。因此,由于此数据库刷新作业,登录(SQL 登录)的权限每天都会被撤销。
由于开发团队无法在数据库刷新后添加块来自动添加权限,作为系统管理员我应该如何处理这种情况。我每天都会收到授予该数据库只读访问权限的票证。由于安全问题,我无法授予他们 dbaccessadmin 权限。
请指教。
授予用户查看所有模式中的所有存储过程的能力的方法是什么?
命令如
GRANT VIEW DEFINITION ON [dbo].[{SprocNameHere}] TO [{UserNameHere}]
Run Code Online (Sandbox Code Playgroud)
是一种一招小马,必须对所有存储过程进行操作。有没有更通用的方法来包含所有内容?
我有理由更改我的计算机名称(it\xe2\x80\x99s 在虚拟机中运行)。我有一个现有的 SQLExpress 实例,它是在重命名之前安装的。
\n有些功能会失败,因为新数据库仍然由旧所有者创建。更具体地说,当我尝试创建新的数据库图表时,出现以下错误。
\n\n\n无法获取有关 Windows NT 组/用户 \'OLDNAME\\user\' 的信息,错误代码 0x534。(微软 SQL Server,错误:15404)。
\n
我使用以下说明来重命名服务器:
\nsp_dropserver \'OLDNAME\\SQLEXPRESS\';\nGO\nsp_addserver \'NEWNAME\\SQLEXPRESS\',\'local\';\nGO\n-- Restart Server\nSELECT @@SERVERNAME; -- NEWNAME\\SQLEXPRESS\nRun Code Online (Sandbox Code Playgroud)\n但是,这并不影响新数据库的默认所有者。它们仍在与所有者一起创建OLDNAME\\user,但所有者已不存在。
我知道如何在创建后更改现有数据库的所有者。但是,如何才能让新数据库拥有正确的所有者呢?
\n我在数据库中有一个使用临时文件的例程。但数据库的排序规则与临时数据库的排序规则不匹配。我无法更改数据库的排序规则,它是客户端数据库。我试过这个:
BEGIN
DECLARE @Collation sysname;
SELECT @Collation=collation_name FROM sys.databases WHERE name = DB_NAME();
CREATE TABLE #Resultaten
(Supplier smallint,
Productcode varchar(20) COLLATE @Collation;,...)
...
Run Code Online (Sandbox Code Playgroud)
但这行不通。
有没有办法将临时文件列的排序规则与当前数据库的排序规则相匹配?
我已经配置了 Ola Hallengren 的备份和完整性检查脚本。
但是,我想了解是否需要设置 SQL Server 索引和统计维护脚本,因为我的 SQL 服务器在 SAN 基础架构上运行,并且我读到将填充因子设置为小于 100% 没有任何好处,或者当数据文件位于 SAN 存储上时执行索引重组或索引重建。任何建议将被认真考虑。
统计信息维护是由 SQL Server 自动完成的,因此我看不出配置 Ola 脚本进行统计信息维护有任何好处。
请注意,SAN存储意味着涉及多个磁盘,数据(无论表是否有索引[堆]或聚集索引或非聚集索引)分散在多个磁盘上。
sql-server ×10
backup ×1
collation ×1
constraint ×1
logins ×1
maintenance ×1
merge ×1
owner ×1
permissions ×1
query-store ×1
tempdb ×1