我有一个包含约 100 亿条记录的行存储表。该表在一个 INT 字段上进行分区,并且有大约 1,400 个活动分区。我还有一个基于相同分区方案/函数的聚集列存储表。我可以将活动分区从行存储表切换到列存储表吗?
ALTER TABLE [dbo].[RowstoreTable] SWITCH PARTITION 741 TO [dbo].[ColumnstoreTable] PARTITION 741
此数据库驻留在 SQL Server 2014 企业版上。
我有一个包含约 100 亿条记录的行存储表。该表在一个 INT 字段上进行分区,并且有大约 1,400 个活动分区。我还有一个基于相同分区方案/函数的聚集列存储表。我可以将活动分区从行存储表切换到列存储表吗?
ALTER TABLE [dbo].[RowstoreTable] SWITCH PARTITION 741 TO [dbo].[ColumnstoreTable] PARTITION 741
此数据库驻留在 SQL Server 2014 企业版上。
SQL Server 错误日志是否可以加密?
我们的 SQL Server 最近有一个内存转储,它把它扔进了错误日志。虽然转储对于确定问题绝对有用,但它让我想知道该转储对可能有权访问服务器但不一定是 SQL Server 的用户的可见性。
我知道 TDE 保护静态数据、日志和备份文件,但潜在的敏感信息可能会通过内存转储暴露——尤其是如果它是由恶意来源故意设计的。
转储的内容类似于:
02f59f10 70b50b54 00000101 000000a2 00650073 T..p........s.e.
02f59f20 00760072 00720065 0027003d 006f006c r.v.e.r.=.'.l.o.
02f59f30 00610063 0068006c 0073006f 00270074 c.a.l.h.o.s.t.'.
02f59f40 0054003b 00750072 00740073 00640065 ;.T.r.u.s.t.e.d.
02f59f50 0043005f 006e006f 0065006e 00740063 _.C.o.n.n.e.c.t.
02f59f60 006f0069 003d006e 00720074 00650075 i.o.n.=.t.r.u.e.
02f59f70 0041003b 00700070 0069006c 00610063 ;.A.p.p.l.i.c.a.
02f59f80 00690074 006e006f 004e0020 006d0061 t.i.o.n. .N.a.m.
如果可能的话,我想通过加密 SQL Server 错误日志来主动预防可能的数据泄露,以减少故意内存转储将敏感数据暴露给非授权用户的可能性。
我正在从以下包含 52 亿条记录的聚集列存储索引中执行 SELECT。当我查看 STATISTICS IO 的输出时,我看到 LOB 逻辑读取。
我的问题是为什么当表中的数据类型都不是 LOB 值时查询执行 LOB 逻辑读取?
我在 SQL Server 2014 SP3 企业版环境中工作。
表定义:
CREATE TABLE [dbo].[ColumnstoreTableA](
[RollupID] [bigint] IDENTITY(1,1) NOT NULL,
[DT_DIMID] [int] NOT NULL,
[TC_DIMID] [int] NOT NULL,
[C_DIMID] [int] NOT NULL,
[CD_DIMID] [int] NOT NULL,
[AC_DIMID] [int] NOT NULL,
[UA_DIMID] [int] NOT NULL,
[UL_DIMID] [int] NOT NULL,
[JP_DIMID] [int] NOT NULL,
[RTT_DIMID] [int] NOT NULL,
[RA] [int] NOT NULL,
[Impressions] [int] NOT NULL,
[Clicks] [int] NOT NULL,
[Conversions] [int] NOT NULL,
[Sends] [int] NOT NULL,
[CreationDate] [datetime2](0) NOT NULL DEFAULT GETDATE(),
[ModifyDate] [datetime2](0) NOT NULL DEFAULT GETDATE(),
[Z_DIMID] [int] NOT NULL,
[R_Actual] [money] NULL,
[JP_DIMID2] [int] NULL
) ON [PRIMARY]
选择语句:
SELECT [T].[Impressions]
FROM [dbo].[ColumnstoreTableA] AS [T]
统计 IO 输出:
表“ColumnstoreTableA”。扫描计数 5,逻辑读取 127,物理读取 0,预读读取 0,lob 逻辑读取 3719,lob 物理读取 0,lob 预读读取 0。
我有一个客户请求将 SNMP 陷阱合并为 SQL Server 中的警报方法。我发现执行此操作的唯一方法是使用 [msdb] 数据库中的 [dbo].[sp_add_alert]。
-- Add Message in sysmessages to be used for the alert
EXEC sp_addmessage
@msgnum = 2624470,
@severity = 1,
@msgtext = 'A DEV GOT SYSADMIN, RUN!',
@lang = 'us_english',
@with_log = 'TRUE'
-- Create an Alert for a user-defined message in sysmessages
EXEC msdb.dbo.sp_add_alert
@name = N'Alert_For_UserDefined_Message',
@message_id = 2624470,
@severity = 0,
@enabled = 1,
@include_event_description_in = 1,
@raise_snmp_trap = 1,
@job_id = N'00000000-0000-0000-0000-000000000000'
-- Raise error to trigger the Alert
RAISERROR (2624470,-1,-1)
但是,当我实际引发错误时,我只收到位于 sysmessages 中的实际消息。
现在,我不太熟悉 SNMP 陷阱,但我觉得好像有一些设置需要定义;无论是在创建警报时还是作为服务器配置中的设置。我在这里错过了什么吗?
我遇到了这个论坛帖子,我从中收集到的所有信息是,在版本 6.5 之后,此功能停止执行任何操作,但没有文档来支持其缺乏功能。