标签: sql-server

SQL Server 可用性组和备份

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 backup availability-groups

2
推荐指数
1
解决办法
1012
查看次数

mslid 上的非聚集索引查找速度很慢

我在 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

2
推荐指数
1
解决办法
1669
查看次数

如何在Sql Server上模拟MSG = 0的错误?

我需要在Sql Server上模拟错误:

\n
\xe2\x80\x9cMsg 0, Level 20 A severe error occurred on the current command\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

因为我们的开发人员必须在应用程序中处理它。

\n

我怎样才能模拟/触发这种错误?(我也可以在我的本地主机上尝试)。

\n

sql-server error-handling

2
推荐指数
1
解决办法
596
查看次数

查询存储中强制计划的奇怪行为

我在查询存储中强制执行计划。计划与每天运行一次的作业中的过程相关联。这项工作的步骤之一就是:

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 并使用同义词的视图(连接到来自不同数据库的表)。

在查询存储中执行如下所示: 在此输入图像描述

为了测试强制计划是否有效,我按照以下步骤操作:

  1. 在 SSMS 中运行查询 ->EXEC [schema].[LoadData]
  2. 上面的执行被视为不同的查询,因此在查询存储中没有看到任何新的查询 = 7
  3. DBA 仅使用运行查询的步骤创建一个新作业 ->EXEC [schema].[LoadData]
  4. 运行上述新创建的作业导致计划 ID = 29800

问题为什么执行计划没有被强制?在“强制计划失败计数”列中为 0。

sql-server query-store

2
推荐指数
1
解决办法
420
查看次数

MERGE 与 MERGE INTO 之间有什么区别?

MERGE 与 MERGE INTO 之间有什么区别?
每个的用例是什么?

令人惊讶的是,我找不到任何询问这种差异的现有问题。

MERGE的文档也没有解释这一点,并且它仅在似乎与该差异(如果有)无关的情况下使用一次。

sql-server merge

2
推荐指数
1
解决办法
2193
查看次数

SQL Server 登录访问权限因每日数据库刷新而被撤销

场景:我已向开发团队授予数据库的 dbdatareader 访问权限。他们确实进行了每日数据库刷新。因此,由于此数据库刷新作业,登录(SQL 登录)的权限每天都会被撤销。

由于开发团队无法在数据库刷新后添加块来自动添加权限,作为系统管理员我应该如何处理这种情况。我每天都会收到授予该数据库只读访问权限的票证。由于安全问题,我无法授予他们 dbaccessadmin 权限。

请指教。

sql-server permissions

2
推荐指数
1
解决办法
570
查看次数

授予所有存储过程的视图定义

授予用户查看所有模式中的所有存储过程的能力的方法是什么?


命令如

GRANT VIEW DEFINITION ON [dbo].[{SprocNameHere}] TO [{UserNameHere}] 
Run Code Online (Sandbox Code Playgroud)

是一种一招小马,必须对所有存储过程进行操作。有没有更通用的方法来包含所有内容?

sql-server azure-sql-database

2
推荐指数
1
解决办法
1万
查看次数

如何更改 SQL Server 中新数据库的默认数据库所有者?

我有理由更改我的计算机名称(it\xe2\x80\x99s 在虚拟机中运行)。我有一个现有的 SQLExpress 实例,它是在重命名之前安装的。

\n

有些功能会失败,因为新数据库仍然由旧所有者创建。更具体地说,当我尝试创建新的数据库图表时,出现以下错误。

\n
\n

无法获取有关 Windows NT 组/用户 \'OLDNAME\\user\' 的信息,错误代码 0x534。(微软 SQL Server,错误:15404)。

\n
\n

我使用以下说明来重命名服务器:

\n
sp_dropserver \'OLDNAME\\SQLEXPRESS\';\nGO\nsp_addserver \'NEWNAME\\SQLEXPRESS\',\'local\';\nGO\n--  Restart Server\nSELECT @@SERVERNAME;    --  NEWNAME\\SQLEXPRESS\n
Run Code Online (Sandbox Code Playgroud)\n

但是,这并不影响新数据库的默认所有者。它们仍在与所有者一起创建OLDNAME\\user,但所有者已不存在。

\n

我知道如何在创建后更改现有数据库的所有者。但是,如何才能让新数据库拥有正确的所有者呢?

\n

sql-server logins owner

2
推荐指数
1
解决办法
3136
查看次数

更改临时文件中列的排序规则

我在数据库中有一个使用临时文件的例程。但数据库的排序规则与临时数据库的排序规则不匹配。我无法更改数据库的排序规则,它是客户端数据库。我试过这个:

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)

但这行不通。

有没有办法将临时文件列的排序规则与当前数据库的排序规则相匹配?

sql-server collation tempdb temporary-tables

2
推荐指数
1
解决办法
161
查看次数

Ola Hallengren 在 SAN 存储上运行的 SQL Server 上的 SQL Server 索引和统计维护脚本有什么用途吗?

我已经配置了 Ola Hallengren 的备份和完整性检查脚本。

但是,我想了解是否需要设置 SQL Server 索引和统计维护脚本,因为我的 SQL 服务器在 SAN 基础架构上运行,并且我读到将填充因子设置为小于 100% 没有任何好处,或者当数据文件位于 SAN 存储上时执行索引重组或索引重建。任何建议将被认真考虑。

统计信息维护是由 SQL Server 自动完成的,因此我看不出配置 Ola 脚本进行统计信息维护有任何好处。

请注意,SAN存储意味着涉及多个磁盘,数据(无论表是否有索引[堆]或聚集索引或非聚集索引)分散在多个磁盘上。

sql-server maintenance ola-hallengren

2
推荐指数
2
解决办法
3053
查看次数