标签: sql-server-2012

提高 SUM 查询的性能

我有一个聚合查询,它有很多列并生成一个巨大的数据集:

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

sql-server sql-server-2012

4
推荐指数
2
解决办法
5236
查看次数

从 MS SQL 2012 中的特定分区删除数据

我想使用分区 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

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

全表扫描次数

我想查看有关表被完全扫描多少次的信息。我希望有类似sys.dm_db_index_usage_stats但表扫描的东西。博客keepitssimleandfast 中描述了一种方法,但我宁愿自服务器启动以来进行所有扫描。

我正在寻找的东西也类似于pg_stat_all_tables.seq_scanPostgreSQL。

sql-server sql-server-2012 scan

4
推荐指数
1
解决办法
1073
查看次数

Tempdb 添加文件需要重启

添加 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

4
推荐指数
1
解决办法
5016
查看次数

为什么在 SQL Server 中将 Base64 字符串解码为 NVARCHAR 时会得到错误的字符?

我一直在研究如何使用 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 更改为CASTNVARCHAR但这会再次导致损坏。

SELECT CAST(CAST('T8O5IGVzdCBsZSBjYWbDqSBsZSBwbHVzIHByb2NoZT8=' as XML ).value('.','varbinary(max)') AS NVARCHAR(250) )

????????????????
Run Code Online (Sandbox Code Playgroud)

我的搜索引擎技能可能让我失望,但我似乎找不到其他有我问题的人。

有什么想法吗?

sql-server collation sql-server-2012 encoding unicode

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

关闭 2 节点可用性组的最佳方法是什么

今年秋天,我们将关闭整个数据中心的电源以更换有缺陷的电源模块。没有 DR 站点可以移动任何东西,公司的最后一点都驻留在一个 DC 中的一个位置。关闭 2 节点可用性组的最佳方法是什么?我是否应该从 AG 中删除数据库然后关闭服务器电源?在电源工作完成后使服务器联机时。我应该先启动共享见证服务器,然后再启动主服务器和第二个服务器吗?然后将数据库重新添加到AG?我们在 VMware 环境中运行 Windows 2008 R2 和 SQL Server Enterprise 2012 核心版。

sql-server-2012 availability-groups

4
推荐指数
2
解决办法
1080
查看次数

如何使用 sp_send_dbmail 发送安全电子邮件

使用sp_send_dbmail在 SQL Server 上发送电子邮件时,如何指定以加密格式发送电子邮件?

我发现一个讨论在主题行中包含字符串“[SECURE]”的线程,但这些评论已有 8 年历史,并且没有任何来源的支持。

security sql-server encryption sql-server-2012 database-mail

4
推荐指数
1
解决办法
1097
查看次数

从第三个表中获取前 1 行值,同时加入 3 个表 mssql

我是 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)

此查询返回多行。但我需要为每个标题记录一个唯一的行。

谁能帮我修一下。

join sql-server stored-procedures sql-server-2012

4
推荐指数
1
解决办法
3152
查看次数

如何更改 SQL Server 主密钥密码?

我创建了一个主密钥,然后创建了一个证书并加密了我的数据库。

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)

如何更改主密钥密码?

谢谢

encryption sql-server-2012 transparent-data-encryption

4
推荐指数
1
解决办法
6242
查看次数

从 SQL Server 2012 SP1 升级到 SQL Server 2019

我正在升级工作中的内部数据库,我们正在创建一个新的 VM 来托管它。

我看不到生成脚本以导出服务器版本 SQL Server 2019 的 SQL Server 2012 SP1 数据库的选项。对我来说是否更好:

  • 按照当前数据库服务器上SQL Server 2012到SQL Server 2019的升级路径,升级完成后将数据库导出到新服务器。

或者

  • 按原样从 SQL Server 2012 导出数据库,并为可用的最高服务器版本 (2017) 编写脚本。

如果我安装了 SQL Server 2012 SP4,是否会给我一个选项来选择服务器版本 SQL Server 2019 的脚本?

提前感谢您的帮助。

sql-server-2012 sql-server-2019

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