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) 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 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) 我们有一个很好的 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脚本,不轮询表”)
我们有一个非常大(1 亿行)的表,我们需要更新其中的几个字段。
对于日志运输等,我们显然也希望将其保持为一口大小的交易。
代码是:
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 2014 标准版。
这与 SQL Azure 无关。本次对话中唯一的 Azure 部分是 Azure 博客存储,作为某些位(SQL 备份和日志)的传输
设想:
主 SQL Server 位于数据中心 1。
备份位于数据中心 2。
在 SQL 2014 中,是否可以使用“备份到 url/azure blob 存储”作为日志传送管道?
我们喜欢将 db 和日志备份到 azure blob 存储的想法。出色、简单、自动的异地备份存储。
使用相同的管道将日志传送到备份数据库服务器会很棒。
可行吗?
(注意:两台服务器都不是域的成员。这是两台独立的服务器,彼此之间没有 AD 或其他关系。)
我们有一个运行 PowerShell 的 SQL 代理作业,它创建了一个很长的输出(它有 robocopy 输出等)。
在 SQL 代理作业历史记录中,我们只能看到此输出的前 1,000 个字符左右。
SQL Server 2014 标准版。
我们有一个运行时间为 20-40 分钟的工作。我们只希望此作业的一个实例运行,但我们不希望运行之间存在巨大差距。
因此,每 60 分钟安排一次并不理想,因为可能会有 30-40 分钟的空闲时间。理想情况下,我们将每 30 分钟安排一次,因为这将使我们达到每 10 分钟运行一次或背靠背运行的理想状态。
在 Windows 操作系统计划任务上,有一些设置可以控制在作业仍在运行时如何处理作业实例化。
如何获得对 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 ×10
log-shipping ×2
t-sql ×2
index ×1
index-tuning ×1
jobs ×1
python ×1
ssis ×1
transaction ×1
trigger ×1