我有一个聚合查询,它有很多列并生成一个巨大的数据集:
SELECT column1,
column2,
...
column20,
sum(column21),
...
sum(column40)
INTO #Output
FROM #Ledger
GROUP BY column1,
...
column20
Run Code Online (Sandbox Code Playgroud)
输入表 ( #Ledger) 有 18m 行,结果表 ( #Output) 有 600k 行。查询耗时 9 分钟。有什么我可以做的让它更快吗?这是执行计划:
#Ledger表上没有索引,Sort 中的感叹号给出以下警告:
操作员在溢出级别 1 和 4 溢出线程的执行期间使用 tempdb 溢出数据,Sort 将 1541592 个页面写入 tempdb 并从 tempdb 读取 1541592 个页面,授予内存 3752160KB,已用内存 3681824KB
我想使用分区 ID 从特定分区中删除数据。我收到了从 SQL 2016 的特定分区截断数据的查询,但没有找到任何较低版本的查询。
我尝试在下面的查询中只删除分区 ID 为 14 和 15 的分区中的数据。
delete from partitiontable1 WITH (PARTITIONS (14 to 15))
Run Code Online (Sandbox Code Playgroud)
delete 语句会删除分区本身和数据吗?
我想保持分区完整并从特定分区中删除数据。说,我在一个表上创建了分区,它有 5 个分区(1、2、3、4、5),我只想从第二个和第三个分区中删除数据。
performance sql-server partitioning sql-server-2012 query-performance
我想查看有关表被完全扫描多少次的信息。我希望有类似sys.dm_db_index_usage_stats但表扫描的东西。博客keepitssimleandfast 中描述了一种方法,但我宁愿自服务器启动以来进行所有扫描。
我正在寻找的东西也类似于pg_stat_all_tables.seq_scanPostgreSQL。
添加 Tempdb 文件是否需要重新启动?我们想在同一个驱动器上添加文件,不删除和不修改。我们在 Dev 和 QA 环境中进行了测试,不需要重启。但是对于生产,我想确保一切正常。有些是陈述条件,并不总是必要的,有时是必要的,我正在阅读以下资源:
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'G:\tempdb2.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0 )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'G:\tempdb3.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0
Run Code Online (Sandbox Code Playgroud)
您是否需要中断才能添加 tempdb 文件?Brent Ozar https://www.brentozar.com/blitz/tempdb-data-files/ “从技术上讲,并非总是如此。但实际上,是的。如果必须缩小文件,在使用 SQL Server 时这非常困难,并且我们已经看到,在添加文件后重新启动 SQL Server 之前,防病毒/文件控制工具才起作用。”
http://jackworthen.com/2017/08/24/adding-additional-data-files-to-the-tempdb-database-in-sql-server/ “一旦创建了附加文件,并不总是需要执行服务重启。但是,在许多生产环境中,如果不先重启服务,就不可能简单地修改现有 TempDB 数据文件 (tempdev) 的文件大小。”
以下资源表示无需重启:https : //www.codykonior.com/2015/08/10/modifying-tempdb-database-files-without-a-restart/ http://jackworthen.com/2017/08 /24/adding-additional-data-files-to-the-tempdb-database-in-sql-server/
performance sql-server sql-server-2012 tempdb performance-tuning
我一直在研究如何使用 SQL Server 解码 Base64,在网上搜索了许多解决方案(一些来自此处)后,似乎基于这种方法。
SELECT CAST(CAST('Base64StringHere' as XML ).value('.','varbinary(max)') AS VARCHAR(250))
Run Code Online (Sandbox Code Playgroud)
当我有 ASCII 文本时,这非常有效。但是,当我有以下法语文本时,它会损坏(大概是由于 VARCHAR 的限制)。
Où est le café le plus proche?
T8O5IGVzdCBsZSBjYWbDqSBsZSBwbHVzIHByb2NoZT8=
Run Code Online (Sandbox Code Playgroud)
并提供以下输出。
Où est le café le plus proche?
Run Code Online (Sandbox Code Playgroud)
我认为相对简单的解决方法是将 to 更改为CAST,NVARCHAR但这会再次导致损坏。
SELECT CAST(CAST('T8O5IGVzdCBsZSBjYWbDqSBsZSBwbHVzIHByb2NoZT8=' as XML ).value('.','varbinary(max)') AS NVARCHAR(250) )
????????????????
Run Code Online (Sandbox Code Playgroud)
我的搜索引擎技能可能让我失望,但我似乎找不到其他有我问题的人。
有什么想法吗?
今年秋天,我们将关闭整个数据中心的电源以更换有缺陷的电源模块。没有 DR 站点可以移动任何东西,公司的最后一点都驻留在一个 DC 中的一个位置。关闭 2 节点可用性组的最佳方法是什么?我是否应该从 AG 中删除数据库然后关闭服务器电源?在电源工作完成后使服务器联机时。我应该先启动共享见证服务器,然后再启动主服务器和第二个服务器吗?然后将数据库重新添加到AG?我们在 VMware 环境中运行 Windows 2008 R2 和 SQL Server Enterprise 2012 核心版。
使用sp_send_dbmail在 SQL Server 上发送电子邮件时,如何指定以加密格式发送电子邮件?
security sql-server encryption sql-server-2012 database-mail
我是 mssql 的新手。在这里我需要使用三个表之间的连接来获取一些数据。
Header join Lines join Images --> 结果
标题表:
行表:
对于每个标题记录,我们可以有多个行项目。
图像表:
每个图像将具有唯一图像或多个图像。需要从标题记录的项目列表中获取 1 个图像 url。
结果集:
询问 :
SELECT HT.O_ID,
HT.Type,
HT.Total,
IM.Image
FROM HEADER_TABLE HT
JOIN LINE_ITEM_TABLE LIT
ON LIT.O_ID = HT.O_ID
JOIN IMAGE_TABLE IT
ON IT.IMAGE = LIT.ITEM_ID
WHERE IT.SECTION = 'Retail'
Run Code Online (Sandbox Code Playgroud)
此查询返回多行。但我需要为每个标题记录一个唯一的行。
谁能帮我修一下。
我创建了一个主密钥,然后创建了一个证书并加密了我的数据库。
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='A Very Strong Password';
GO
CREATE CERTIFICATE foo
WITH
SUBJECT='Database Encryption for Multi';
GO
USE mydatabase
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE foo;
GO
ALTER DATABASE mydatabase SET ENCRYPTION ON;
GO
Run Code Online (Sandbox Code Playgroud)
如何更改主密钥密码?
谢谢
我正在升级工作中的内部数据库,我们正在创建一个新的 VM 来托管它。
我看不到生成脚本以导出服务器版本 SQL Server 2019 的 SQL Server 2012 SP1 数据库的选项。对我来说是否更好:
或者
如果我安装了 SQL Server 2012 SP4,是否会给我一个选项来选择服务器版本 SQL Server 2019 的脚本?
提前感谢您的帮助。
sql-server-2012 ×10
sql-server ×7
encryption ×2
performance ×2
collation ×1
encoding ×1
join ×1
partitioning ×1
scan ×1
security ×1
tempdb ×1
transparent-data-encryption ×1
unicode ×1