小编Mic*_*vko的帖子

将 NULL 传递给 SSIS 变量

我正在构建一个包来执行一个带有配置表参数的过程。

我已经构建了两个执行 SQL 任务框。从配置表中填充 SSIS 变量。第二个使用这些变量执行过程。

我面临以下行为。整数变量的默认值是 0,字符串是空字符串。即使在从配置表中获取 NULL 之后,这些变量也会保持它们的值。

如何更改此行为以将 NULL 的 SQL Server 逻辑应用为默认“值”,或者仅启用它们从配置表获取的 NULL 以覆盖其默认值?

sql-server ssis sql-server-2014 ssis-2014

5
推荐指数
1
解决办法
7150
查看次数

在内存表中使用 ddl 触发器

我创建了服务器范围 ddl 触发器来审核服务器上的用户活动。
现在,如果有人尝试创建内存表,该语句将失败并显示以下错误:

Error SQL72014: .Net SqlClient Data Provider: Msg 12332, Level 16, State 107,
Line 1 Database and server triggers on DDL statements DROP and CREATE are not
supported with memory optimized tables.
Run Code Online (Sandbox Code Playgroud)

我可以创建 ddl 触发器来忽略对内存表的操作吗?

sql-server in-memory-database sql-server-2014 memory-optimized-tables

3
推荐指数
1
解决办法
2144
查看次数

使用 group by 和 window 函数减少表扫描

有一个我正在尝试改进的代码,如下所示(简单示例):

SELECT    DISTINCT a.col_a
         ,COALESCE(b1.col_c, b2.col_c, b3.col_c)
FROM      tab_a a
LEFT JOIN tab_b b1
          ON a.col_a = b1.col_a
             AND b1.col_b = 'blabla1'
LEFT JOIN tab_b b2
          ON a.col_a = b2.col_a
             AND b2.col_b = 'blabla2'
LEFT JOIN tab_b b3
          ON a.col_a = b3.col_a
             AND b3.col_b = 'blabla3';
Run Code Online (Sandbox Code Playgroud)

您可以使用以下脚本重新创建这些表

CREATE TABLE tab_a(col_a int)
CREATE TABLE tab_b(col_a INT, col_b VARCHAR(10), col_c INT)

INSERT INTO dbo.tab_a ( col_a ) VALUES ( 1 ), ( 2 ), ( 3 );

INSERT INTO dbo.tab_b ( col_a …
Run Code Online (Sandbox Code Playgroud)

sql-server window-functions sql-server-2016

3
推荐指数
1
解决办法
280
查看次数

查询存储审计

我们经常使用查询存储强制计划功能。
我们想审核何时以及谁强制执行每个计划。
是否需要扩展事件会话来审核此事件,
或者有包含此特定信息的 dmvs 或目录视图?

sql-server sql-server-2016 query-store

2
推荐指数
1
解决办法
95
查看次数

无法理解锁定逻辑

在尝试创建死锁时,我遇到了无法理解的锁定问题:我正在更新按timekey列分区的大表: 在此处输入图片说明

我正在尝试运行两个更新语句:

BEGIN TRAN
    UPDATE [Transform].[AllCommunications_Arch] 
        SET Callid = 10300503454
    WHERE Callid = 10348103154
    AND TimeKey = 20161205
Run Code Online (Sandbox Code Playgroud)

BEGIN TRAN
    UPDATE [Transform].[AllCommunications_Arch] 
        SET Callid = 1234576704
    WHERE Callid = 4321276791
        AND TimeKey = 20160720
Run Code Online (Sandbox Code Playgroud)

每个人都应该更新一行,每个人都在不同的分区上运行,但由于某种原因,一个语句仍然阻塞另一个。DB 具有默认隔离杆(已提交读)。 在此处输入图片说明

执行计划: 在此处输入图片说明

CREATE TABLE [Transform].[AllCommunications_Arch](
    [SessionId] [varchar](100) NULL,
    [TimeKey] [int] NULL,
    [Callid] [bigint] NULL,
    [MemberId] [int] NULL,
    [Duration] [int] NULL,
    [CalledAt] [datetime] NULL,
    [EndTime] [datetime] NULL....
) ON [Transform_Timekey_Daily_Arch_PS]([TimeKey])
WITH
(
DATA_COMPRESSION = PAGE
)

GO

CREATE CLUSTERED INDEX [CL_Transform_AllCommunications_Arch] ON [Transform].[AllCommunications_Arch] …
Run Code Online (Sandbox Code Playgroud)

sql-server locking sql-server-2014

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