我正在探索使用 SSIS 将大型数据集加载到目标表中。我遇到了“分区切换”作为将数据更快地加载到目标表的方法之一。
但是由于临时表必须与目标表分区具有几乎相同的配置才能进行分区切换,那么这里真正的好处是什么?
我担心的是在清理/转换后加载数据。如果临时表与目标分区完全相同,则两者的加载时间应该相同。还是将数据加载到巨大的分区聚集索引表中比加载到完全相同的空未分区聚集索引表中需要更多时间?
我们仍然需要填满临时表(它与目的地几乎相同),它需要与直接在目的地分区中加载数据相同的时间,对吧?为什么不直接加载到目的地呢?
就在这里加载数据的时间而言,真正的好处是什么?
我支持使用 SQL Server 2016 后端的第三方应用程序。我们没有源代码访问权限,第三方支持响应缓慢。大多数情况下,我可以索引和魔术来摆脱它向数据库抛出的有时可怕的查询,但是在很多情况下,我几乎无能为力(在时间、金钱和存储的限制下) )。查询是错误的。
有没有办法在行政上将应用程序提交的查询替换为其他查询?如果应用程序名称匹配,我正在想象对批处理执行的某种正则表达式匹配。
例子:
-- Submitted by application
update Table set IsBilled = 0 where ID = '{EFD5F13C-6123-4913-B530-8941FC71B969}'
-- What I want the query to be (to avoid spurious updates to Table)
-- (Table is large, and the application is submitting this query on every page view)
update Table set IsBilled = 0 where ID = '{EFD5F13C-6123-4913-B530-8941FC71B969}' and IsBilled = 1
-- Proposed regex
-- Match
update Table set IsBilled = 0 where ID …Run Code Online (Sandbox Code Playgroud) 我知道这里面有很多变量,我不是在寻找精确的分钟数:秒 :) 我已经阅读了许多资源,这些资源声明 aTRUNCATE使用的资源比 a 少得多DELETE,因此执行速度更快。但是没有提到数量级。由于 aTRUNCATE是 DDL(数据定义语言)操作而不是 DML(数据操作语言)操作,并且只有系统表是事务的一部分,因此我认为它不会花费很长时间。
任何有经验的人都可以使用接近这种大小的桌子来做这件事,可以提供一些见解吗?我们最多谈一分钟,最多一个小时,几天,几周?
我的问题:我有一组视图,我想从中动态查询。我想将视图名称加载SELECT * from sys.all_views到游标中(让我们称之为view_cursor),然后在过程中执行以下操作:
-- loop starts
FETCH NEXT FROM view_cursor INTO @view_name;
SELECT * FROM @view_name;
-- fetch next
-- loop ends
Run Code Online (Sandbox Code Playgroud)
我已经在一个视图中尝试过这个,我将它作为参数传递给存储过程:
CREATE PROCEDURE [dbo].[query_Special_View](@view_name VARCHAR(100)) AS
DECLARE viewname VARCHAR(100);
DECLARE @counter INT = 0;
BEGIN
PRINT @view_name
EXECUTE('SELECT COUNT(Value) INTO' + @counter + 'FROM' + @view_name + '');
PRINT @counter;
END
Run Code Online (Sandbox Code Playgroud)
然后,我想使用现有视图名称执行该过程:
EXEC [dbo].[query_Special_View]
@view_name = N'A_very_special_LOC_view' -- the view name as parameter
GO
Run Code Online (Sandbox Code Playgroud)
结果是:
消息 207,级别 16,状态 1,第 1 行 列名“值”无效。
但是,我尝试 …
我正在参加 Microsoft 认证 70-461 的模拟测试,并想确认我所看到的是否是错误(这是来自 Microsoft Press 的官方书籍,第九次印刷。我在现有勘误表中没有看到这一点)。
题:
您正在向
Hovercraft数据库添加表。您可以使用以下语句创建表:Run Code Online (Sandbox Code Playgroud)Create Table Hovercraft.Testing ( TestIdentifier uniqueidentifier DEFAULT NEWSEQUENTIALID() PRIMARY KEY, HullId tinyint NOT NULL, TestDate date NOT NULL, Registration nvarchar(8) NOT NULL, Notes nvarchar(max) )您可以使用以下哪个语句向该表中插入数据?(每个正确答案都提供一个完整的解决方案。选择两个。)
选择是:
INSERT INTO Hovercraft.Testing (Notes, HullID, TestDate, Registration,)
VALUES (N'Hovercraft requires maintenance.', 142, '20120715', N'AAA320')
INSERT INTO Hovercraft.Testing (HullID, TestDate, Registration, Notes)
VALUES (124, '20120722', N'AAA321', N'Hovercraft in good condition. Next service in six months' time')
INSERT INTO Hovercraft.Testing (HullID, TestDate, Registration, …
一些系统扩展程序在 2017 RC2 上工作
例如
exec xp_dirtree @directory = '/var', @depth = 1
Run Code Online (Sandbox Code Playgroud)
正确返回 /var 中包含的目录
然而:
exec xp_create_subdir '/foo'
Run Code Online (Sandbox Code Playgroud)
退货
Msg 22048, Level 15, State 0, Line 18
Error executing extended stored procedure: Invalid Parameter
Run Code Online (Sandbox Code Playgroud)
是否支持该过程,如果支持,参数的语法是什么?
在 Ubuntu 上测试运行,在 MacOS 上的 Docker 容器内。
select @@VERSION
Microsoft SQL Server 2017 (RC2) - 14.0.900.75 (X64) Jul 27 2017 08:53:49 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 16.04.2 LTS)
Run Code Online (Sandbox Code Playgroud) 我需要正确了解在 SQL Server 2016 标准版中是否以及如何获得每行 10KB 或 20KB。
我正在阅读 SQL Server 技术规范:
特别是“每行字节数”
它指的是 BOL 中的某些内容,我找不到。
SQL Server 联机丛书中的“行溢出数据超过 8 KB ”主题部分在哪里。?
在我的数据库上运行 sp_BlitzIndex 后,我发现了许多“主动索引”(https://www.brentozar.com/blitzindex/sp_blitzindex-aggressive-indexes/)。不仅如此,我还发现“积极索引”的数量正在缓慢增加。
我是一名涉足 DBA 方面的开发人员,我不知道如何从 sp_BlitzIndex 提供的有关主动索引的信息改进它们。
我可以调整单个查询的性能,但是我不知道如何找出索引变得激进时可能发生的查询,并且我假设发生锁定是因为服务器负载不足 - 这不会如果我调整单个查询,情况并非如此。
任何有关如何进一步调查的提示将不胜感激。
我在 SQL 2016 上创建了一个 SQL Server 作业。这是一个从我们的备份实用程序 DDBoost 运行完整备份的作业。当我执行作业时,所有数据库的备份将在 5 分钟内完成。但是,该作业将永远运行。有任何想法吗?
USE [master]
GO
DECLARE @returnCode int
EXEC @returnCode = dbo.emc_run_backup
' -c <FullyQualifiedName> -k -S 4 -l full -y +90d
-a "NSR_DFA_SI=TRUE" -a "NSR_DFA_SI_USE_DD=TRUE"
-a "NSR_DFA_SI_DD_HOST=adc-dd-02" -a "NSR_DFA_SI_DD_USER=ddboost"
-a "NSR_DFA_SI_DEVICE_PATH=/sql-prod"
-a "NSR_DFA_SI_DD_LOCKBOX_PATH=D:\Program Files\EMC DD Boost Modules\DDBMA\config"
-a "NSR_SKIP_NON_BACKUPABLE_STATE_DB=TRUE"
-a "SKIP_BACKUP_PROMOTION=FALSE" "MSSQL$PRSQL01:"'
IF @returnCode <> 0
BEGIN
RAISERROR ('Fail!', 16, 1)
END
Run Code Online (Sandbox Code Playgroud) 需要帮助解决使用Ola Hallengren 的存储过程将数据库备份到共享文件夹的问题。
我有一个在 SQL Server 启动时执行的过程。它运行Ola Hallengren的DatabaseBackup程序。SQL Server 服务在NT Service.
该共享对运行 SQL 的计算机具有权限。
现在,如果DatabaseBackup手动执行它会很好。当它在启动时自动执行时失败并出现以下错误:
Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 786 [Batch Start Line 0] 目录 \\*** 不存在
如果我用Execute As DBO子句更改程序,它会失败并出现相同的错误。
我也试过AlterSP withExecute As Self子句 - 又是同样的错误。
所以问题是:
我该怎么做才能让它发挥作用?
\\machine2\backup\)sql-server ×10
errors ×1
jobs ×1
linux ×1
partitioning ×1
performance ×1
security ×1
ssms ×1
truncate ×1
view ×1