我很惊讶这个问题没有得到深入讨论:
本文告诉我们如何使用windbg在内存中转储正在运行的.Net进程字符串.
我花了很多时间研究SecureString类,它使用非托管固定内存块,并保持数据加密.好东西.
当您使用其值并将其分配给SQLConnection.ConnectionString属性(属于System.String类型)时,会出现此问题.这是什么意思?好...
这完全否定了SecureString功能!
最重要的是,SQLConnection类是无法使用的,我甚至无法使用SecureString属性自行滚动; 耶和闭源.好极了.
新的DAL层正在进行中,但是对于新的主要版本以及对于这么多用户而言,每个用户升级之前至少需要2年,其他人可能会无限期地保留旧版本.
由于使用连接的频率,从SecureString编组将无济于事,因为不可变的旧副本会粘在内存中,直到GC出现.集成的Windows安全性不是一种选择,因为一些客户端不在域上工作,而其他客户端通过网络漫游和连接.
如何在内存中保护连接字符串,以便使用windbg无法查看?
我试图通过分支,按周来提取一些具有事务计数的数据,这将在以后用于提供一些动态的.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)