小编Jon*_*ica的帖子

SQL Server:如何跟踪 CREATE INDEX 命令的进度?

SQL Server 2014,标准版

我已经读过 dm_exec_requests 中的 percent_complete 不适用于 CREATE INDEX,实际上,percent_complete 坚持为 0。所以这没有帮助。

我目前使用下面的方法,它至少显示了我的运动(索引创建没有被阻止)。但是我完全不知道我是 %10 还是 %99。

我尝试了这里描述的方法:https : //dba.stackexchange.com/a/102545/6229 但它显示了一个明显错误的 est 完成时间(它基本上显示了一个 60+ 分钟的过程的“现在”,我进入了 10 分钟)

我怎样才能得到线索?

SELECT percent_complete, estimated_completion_time, reads, writes, logical_reads, text_size, *
FROM
sys.dm_exec_requests AS r
WHERE
r.session_id <> @@SPID
AND r.session_id = 58
Run Code Online (Sandbox Code Playgroud)

index sql-server sql-server-2014 index-maintenance

51
推荐指数
3
解决办法
5万
查看次数

这个while循环是否需要显式事务?

SQL Server 2014:

我们有一个非常大(1 亿行)的表,我们需要更新其中的几个字段。

对于日志运输等,我们显然也希望将其保持为一口大小的交易。

如果我们让下面运行一会儿,然后取消/终止查询,那么到目前为止所做的工作会全部提交,还是需要添加明确的 BEGIN TRANSACTION / END TRANSACTION 语句以便我们可以随时取消?

DECLARE @CHUNK_SIZE int
SET @CHUNK_SIZE = 10000

UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
where deleted is null or deletedDate is null

WHILE @@ROWCOUNT > 0
BEGIN
    UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
    where deleted is null or deletedDate is null
END
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql transaction sql-server-2014

12
推荐指数
1
解决办法
8708
查看次数

在这种情况下将使用哪个索引?

SQL Server 2014 标准版

我需要找到特定月份往返特定城市的航班数量。例如

select count(*) 
from flights 
where flightTo_AirportCode = 'aaaa' 
and flightFrom_Airportcode = 'bbbb' 
and flightdate < '2016-04-01' 
and flightdate > '2016-02-28' ;
Run Code Online (Sandbox Code Playgroud)

表架构如下。

我试图估计索引模型 A 或索引模型 B(如下)是否更可取(构建索引需要很多小时,并且磁盘空间一次只允许一个存在,所以我试图在跳跃之前查看)。

根据我的经验,任何一个索引都可以。我对吗?

  create index [modelA] on flights (flightTo_AirportCode, flightFrom_AirportCode, flightDate)

  create index [modelB] on flights (flightDate, flightTo_AirportCode, flightFrom_AirportCode)
Run Code Online (Sandbox Code Playgroud)

(或者,更好的是,我可以使用二进制索引或高级机制来解决这个问题吗?)

CREATE TABLE [dbo].[flights](
    [flightId] [uniqueidentifier] NOT NULL,
    [accountId] [uniqueidentifier] NULL,
    [flightDate] [datetime] NULL,
    [flightTo_AirportCode] [nvarchar](30) NULL,
    [flightFrom_AirportCode] [nvarchar](30) NULL,
    -- ... 45 more fields
    CONSTRAINT [PK_flight] PRIMARY KEY CLUSTERED 
(
    [flightId] …
Run Code Online (Sandbox Code Playgroud)

sql-server index-tuning sql-server-2014

11
推荐指数
1
解决办法
435
查看次数

从插入触发器启动 python 脚本

我们有一个很好的 Python 代码,它可以发送一些电子邮件并与云系统进行交互。工作正常。但是我们必须每隔几分钟就启动它来轮询数据库。出于业务目的,我们确实需要实时启动 python 脚本,因此没有轮询延迟。(这服务于与客户通电话的销售人员。)

我们真的不想要 1 分钟的轮询循环。或 30 秒。我们希望记录显示在数据库中并立即发生。

实现此目的的快速方法是在将特定记录类型插入到表中时触发它。

我们可以从触发器触发 python 脚本吗?

根据下面 Aaron 的说明,我们知道这是一个非常糟糕的事情™,但是这张表很少使用(每天插入 0-12 次)。轮询表无法满足我们的业务需求(我们需要 .py 立即运行——它不仅仅是发送电子邮件)。

我们认为满足我们业务需求的一种方法是在 SQL Server 上设置 .net 版本的 python,然后让 T-SQL 以调用 C# 东西的方式调用 python 脚本......但我们不知道如何真的这样做!(因此这个问题)。

文档/细节?


我在 Stack Overflow 上问了一个后续问题:如何在 SQL Server 中创建 Python CLR 过程?


问题下的问题:你有一块python。您希望它从 SQL 触发器触发,但您知道这是一件非常糟糕的事情。那么,在 SQL 操作中间没有 python 代码的情况下,您如何实际实现相同的效果?

解决这种需求的非触发、非轮询方法是什么?

(同样的效果=“插入/更新/删除发生在表中,并且在db事件的2秒内触发python脚本,不轮询表”)

trigger sql-server service-broker python

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

sql server:以小块更新大表上的字段:如何获取进度/状态?

我们有一个非常大(1 亿行)的表,我们需要更新其中的几个字段。

对于日志运输等,我们显然也希望将其保持为一口大小的交易。

  • 下面会做的伎俩吗?
  • 我们如何让它打印一些输出,以便我们可以看到进度?(我们尝试在其中添加 PRINT 语句,但在 while 循环期间没有输出任何内容)

代码是:

DECLARE @CHUNK_SIZE int
SET @CHUNK_SIZE = 10000

UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
where deleted is null or deletedDate is null

WHILE @@ROWCOUNT > 0
BEGIN
    UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
    where deleted is null or deletedDate is null
END
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

10
推荐指数
1
解决办法
9827
查看次数

本地 SQL Server:通过 Azure Blob 存储传送日志:可能吗?

这是关于内部部署的常规 SQL Server 2014 标准版。

这与 SQL Azure 无关。本次对话中唯一的 Azure 部分是 Azure 博客存储,作为某些位(SQL 备份和日志)的传输

设想:

主 SQL Server 位于数据中心 1。

备份位于数据中心 2。

在 SQL 2014 中,是否可以使用“备份到 url/azure blob 存储”作为日志传送管道?

我们喜欢将 db 和日志备份到 azure blob 存储的想法。出色、简单、自动的异地备份存储。

使用相同的管道将日志传送到备份数据库服务器会很棒。

可行吗?

(注意:两台服务器都不是域的成员。这是两台独立的服务器,彼此之间没有 AD 或其他关系。)

sql-server log-shipping sql-server-2014

8
推荐指数
1
解决办法
3208
查看次数

如何查看整个作业步骤输出?

我们有一个运行 PowerShell 的 SQL 代理作业,它创建了一个很长的输出(它有 robocopy 输出等)。

在 SQL 代理作业历史记录中,我们只能看到此输出的前 1,000 个字符左右。

  1. 是否还有其他地方可以查看整个输出?
  2. 是否应该使用另一种方法来查看完整输出?

sql-server sql-server-agent

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

如何确保只有一个作业实例正在运行?

SQL Server 2014 标准版。

我们有一个运行时间为 20-40 分钟的工作。我们只希望此作业的一个实例运行,但我们不希望运行之间存在巨大差距。

因此,每 60 分钟安排一次并不理想,因为可能会有 30-40 分钟的空闲时间。理想情况下,我们将每 30 分钟安排一次,因为这将使我们达到每 10 分钟运行一次或背靠背运行的理想状态。

在 Windows 操作系统计划任务上,有一些设置可以控制在作业仍在运行时如何处理作业实例化。

如何获得对 SQL Server 的一些控制?我如何达到我的理想(或接近它)?

sql-server sql-server-agent jobs sql-server-2014

8
推荐指数
1
解决办法
1629
查看次数

SQL Server:无法保存导入导出包,但在标准版上

我很迷惑。

问题:SSIS(“SQL Server 导入导出向导”)应该让我构建数据导入包并将其保存到文件中,以便于重新运行(转换为任务等)。

我想保存一个包,但该工具总是告诉我“配置文件无法保存,因为您没有运行 SQL 标准版。”

我知道 SSIS(“SQL Server 导入导出向导”)那个,但我认为我有资格。

为什么保存选项不可用?

正在连接到标准实例(来自 SSMS 中的连接属性):

Microsoft SQL Server Standard Edition (64-bit)  (SQL 2005)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 SQL 2012 和 2014 客户端工具,并且对每个工具都有相同的体验。

我该如何解决这个问题?

(该工具是否检测我本地拥有的 Express 版本?)

sql-server ssis

7
推荐指数
1
解决办法
2856
查看次数

SQL Server:“正在恢复”状态下的日志传送:我可以暂时将其从恢复中取出来检查吗?

我知道目标数据库处于“恢复”状态是正常的

我还想做一些查询,以检查数据是否都是最新的。

我是否可以将它暂时置于只读、非恢复状态以检查数据,然后将其恢复到恢复状态,而不会破坏整个恢复链?

谢谢!

sql-server log-shipping

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