小编Sta*_*haw的帖子

是否有更安全的.Net SQLConnection类替代品?

我很惊讶这个问题没有得到深入讨论:

本文告诉我们如何使用windbg在内存中转储正在运行的.Net进程字符串.

我花了很多时间研究SecureString类,它使用非托管固定内存块,并保持数据加密.好东西.

当您使用其值并将其分配给SQLConnection.ConnectionString属性(属于System.String类型)时,会出现此问题.这是什么意思?好...

  • 它以纯文本格式存储
  • 垃圾收集将其移动,将副本留在内存中
  • 它可以通过windbg内存转储读取

这完全否定了SecureString功能!

最重要的是,SQLConnection类是无法使用的,我甚至无法使用SecureString属性自行滚动; 耶和闭源.好极了.

新的DAL层正在进行中,但是对于新的主要版本以及对于这么多用户而言,每个用户升级之前至少需要2年,其他人可能会无限期地保留旧版本.

由于使用连接的频率,从SecureString编组将无济于事,因为不可变的旧副本会粘在内存中,直到GC出现.集成的Windows安全性不是一种选择,因为一些客户端不在域上工作,而其他客户端通过网络漫游和连接.

如何在内存中保护连接字符串,以便使用windbg无法查看?

.net sql memory security windbg

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

使用左外连接进行数据聚合

我试图通过分支,按周来提取一些具有事务计数的数据,这将在以后用于提供一些动态的.Net图表.

我有一个日历表,我有一个分支表,我有一个事务表.

这是我的数据库信息(仅包括相关列):

分支表:

ID (int), Branch (varchar)
Run Code Online (Sandbox Code Playgroud)

日历表:

Date (datetime), WeekOfYear(int)
Run Code Online (Sandbox Code Playgroud)

交易表:

Date (datetime), Branch (int), TransactionCount(int)
Run Code Online (Sandbox Code Playgroud)

所以,我想做类似以下的事情:

Select b.Branch, c.WeekOfYear, sum(TransactionCount)
FROM BranchTable b
LEFT OUTER JOIN TransactionTable t
    on t.Branch = b.ID
JOIN Calendar c
    on t.Date = c.Date
WHERE YEAR(c.Date) = @Year // (SP accepts this parameter)
GROUP BY b.Branch, c.WeekOfYear
Run Code Online (Sandbox Code Playgroud)

现在,当分支没有一周的任何事务时,这可以工作除外,在这种情况下,该分支在该周返回NO RECORD.我想要的是获得那个分支,那一周和"0"的总和.我尝试了isnull(sum(TransactionCount),0) - 但这也没有用.所以我会得到以下内容(为了说明目的而弥补金额):

+--------+------------+-----+
| Branch | WeekOfYear | Sum |
+--------+------------+-----+
|      1 |          1 |  25 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server group-by outer-join

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

标签 统计

sql ×2

.net ×1

group-by ×1

memory ×1

outer-join ×1

security ×1

sql-server ×1

windbg ×1