这里有很多关于 DBA EXCHANGE 的问题。但他们都帮不了我。
我有两个问题:
1)使用sp_whoisactive,我发现了很多sys.sp_reset_connection;1(我知道它们是sp_reset_connections因为我使用了dbcc inputbuffer(SPID):

这是“主服务器”,因此其他服务器( 3,4,7 )在这里不断请求某些数据库的信息(我看到的是,每个请求都是针对 MASTER 数据库的)。

2)他们为什么要花这么多时间?
看这里的一些答案,发现系统在等待CPU。但所有 CPU 都是空的。这怎么会是问题?
在幕后,SQL Server 使用 sp_reset_connection 逻辑来“重置”SQL Server 的连接状态,这比建立全新的连接更快。较旧的驱动程序将过程调用作为单独的 TDS 往返发送到 SQL Server。
较新的客户端驱动程序在下一个命令中添加了一个标志位,从而避免了额外的网络往返。
很好……但我还是不知道该怎么办。
这不会给我带来问题。我只想知道如何解决这个问题。
是否可以删除和索引并重建它,而不是禁用它并重建?
performance sql-server sql-server-2014 bulk-insert query-performance
我被要求为一些人创建一些 sql server 报告(创建一个报告并通过电子邮件发送它们)。我以为会是 2 或 3 个,但现在他们知道我可以做到,每周我都需要再创建 1 或 2 个报告。
我使用 SQL Agent 和一些步骤来创建一个表,填充所需的结果,然后将它发送到一个 xls 文件中。那真的不是问题,但我想知道什么可以更好地用于此任务,因为现在我的 SQL 代理上有 20 多个作业。一切都井井有条,等等,但我仍然不喜欢看它。我已经有很多 DBA 工作,我不想混杂。
报告服务是一种可行的方法吗?我可以正常创建一个查询,他们将它发送到一个 excel 文件并通过电子邮件发送它而不使用 C# 或 Visual Studio 吗?
sql-server-2012 reporting enterprise-edition powerbi-report-server
我有一个简单的任务来迁移数据库。
我正在主数据库中进行备份,将其设置为 OFFLINE,然后将其迁移到辅助数据库。
完全没有问题。
但我注意到一些奇怪的事情。
我检查是否有人将数据库与 一起使用sp_WhoIsActive,但它什么也没显示。
然后我使用alter database X set offline.
然后它根本不会改变它,并且查询继续运行。然后我再次检查是否有什么东西在使用数据库,令我惊讶的是,它显示了一些运行了 22 小时、20 小时或 44 分钟的东西。
为什么不sp_WhoIsActive显示?
例子:
第一次运行:
然后Alter etc etc set offline。然后它锁定,我再次检查
sp_WhoIsActive
砰。有什么东西在跑。
这不是技术问题。我想知道在开发人员希望对所有事情都拥有 SA 的地方使用的最佳实践。
最近的事件是:
开发人员希望使用 BCP OUT 将数据快速导出到 txt 文件。
我应该怎么想?我应该说“为什么你需要这么快?”
我确信有很多替代方法可以将数据导出到 .TXT 文件。它们可能会更慢,但它可以完成工作。
我们在这里不使用 Windows 登录,只使用登录,所以我无法创建代理帐户(我正在阅读有关此的内容)。
注意:他们使用 Delphi 编写应用程序代码。
我有三个不大的数据库。每个差异备份大约 50MB,然后我们在午夜进行完整备份。
这样做有什么问题吗?
我可以进行完整备份,然后记录,然后每天 4 或 5 次差异,但存储不是这个实例的问题。我可以承受丢失 1 小时的数据,这没问题,这就是我创建所有差异的原因(我使用的是完全恢复模式)。然后我只能恢复 full + diff ,而不是 full + log + log + log + log + log + log + log 。
我正在尝试在这里设置一个测试环境以了解更多信息并将其应用于我们的生产环境。
我已经使用 CLuster 管理器创建并安装了 Windows 集群。现在,我将在两台计算机上安装 SQL Server Enterprise 2014,然后使用可用性组创建 HA。故障转移将是手动的。它们将在同步数据传输中。
我的问题是,我是否可以正常安装“独立安装或添加...”SQL Server,或者我需要使用“新的SQL Server故障转移群集安装”。
我在互联网上找不到任何关于此的信息。
我将在将在集群中配置的两个节点上安装 sql server。
停止 SQL Server 服务时的行为:
可用性组失败(在 SECONDARY SQL SERVER 上解析并在集群管理上失败)。
SQL Server 不与集群 ip 连接(我在软件内部使用固定的集群 ip 以便它在 SQL1 和 SQL2 上x.x.x.10连接。使用应该在x.x.x.9(SQL1)和x.x.x.8(SQL2)上连接我,因为windows failover cluster.
right click > failover)。要按原样返回所有内容,我需要SQL1 SERVICE手动启动、连接SQL1 SSMS和right click > failover手动。停止集群管理上的 NODE2 服务,使其再次将 SQL1 节点变为主节点。
停止主集群节点时的行为:
可用性组转到 SQL2/NODE 2(辅助现在是主要的)。
主 AG 未解决...
SQL Server 与集群 ip 连接(我说的是 SSMS 。与 ipX.x.x.10连接x.x.x.8,在杀死节点x.x.x.9( …
sql-server clustering failover availability-groups sql-server-2016
我们有一个包含 4 列的表(示例):
create TABLE [dbo].[myTable]
(
[Id] BIGINT NOT NULL,
[Id2] SMALLINT NOT NULL,
[Id3] SMALLINT NOT NULL,
[IdUnique] UNIQUEIDENTIFIER NOT NULL,
[CreateDate] DATETIME NOT NULL,
CONSTRAINT [PK_MyTable_Id_Id2_Id3] PRIMARY KEY CLUSTERED ([Id], [Id2], [Id3]),
CONSTRAINT [UQ_MyTable_IdUnique] UNIQUE NONCLUSTERED ([IdUnique] ASC )
)
Run Code Online (Sandbox Code Playgroud)
这个想法是在 WHERE 中使用 IdUnique 来检索 ID、ID2 和 ID3:
但显然我们正在进行键查找。
如何在唯一非聚集索引上包含包含列?
我找不到与此相关的任何内容。
我正在尝试在同一查询中插入数据然后删除数据。
我试图将其分块删除,以免导致日志问题:
DECLARE @BatchSize INT
SET @BatchSize = 100000
WHILE @BatchSize <> 0
BEGIN
DELETE (@BatchSize) TABLE1
WHERE LogType = 'LOGTYPE'
AND TABLE1.Id NOT IN (SELECT Id FROM TABLE2)
AND TABLE1.Id IN (SELECT Id FROM DifferentDB..TABLE3)
SET @BatchSize = @@rowcount
END
Run Code Online (Sandbox Code Playgroud)
但同样的查询,我想先在辅助数据库中插入数据,然后删除。
是否可以在没有触发器的情况下实现?(插入、删除……)
我也愿意接受更好的分块删除方法,我只是凭记忆得到了这个方法。
sql-server ×8
clustering ×2
bulk-insert ×1
connections ×1
constraint ×1
failover ×1
index ×1
performance ×1
recovery ×1
reporting ×1
t-sql ×1