I'm developing a Windows Service in VB.NET 2008, but I feel like I'm going to have an aneurysm. To debug the service, I've added a 15 second wait to the initialization code, which gives me time to start the service and attach the .NET debugger before anything happens, so I can hit breakpoints and such. I really miss "integrated" debugging with this type of workaround, and testing seems to be a huge pain.
What's the best way to do "regular" …
这更像是一个加密理论问题,但是哈希算法的结果是否可能与源相同?例如,假设我有一个字符串:
baf34551fecb48acc3da868eb85e1b6dac9de356
Run Code Online (Sandbox Code Playgroud)
如果我得到SHA1哈希,结果是:
4d2f72adbafddfe49a726990a1bcb8d34d3da162
Run Code Online (Sandbox Code Playgroud)
理论上,是否存在这两个值匹配的情况?我不是在这里特别询问SHA1 - 这只是我的例子.我只是想知道是否以这种方式构建散列算法.
我注意到当我使用.NET中的Windows窗体(或任何其他控件,就此而言)时,我可以捕获许多不同的事件 - 在打开时,有:
关闭时,有:
加上我错过的任何其他人.我知道我可以在每个事件中放置一个消息框,然后运行我的应用程序并记下订单,但我怀疑我会记住它.
对于表单和其他控件,是否有在线参考列出了发生这些事件的顺序?我在MSDN上找不到它,虽然也许我在某个地方错过了它.
我喜欢 SQL Server 2008 中的新 DATE 数据类型,但是当我将 DATE 字段与链接服务器(在本例中为 SQL 2005)上的 DATETIME 字段进行比较时,如下所示:
DECLARE @MyDate DATE
SET @MyDate = CONVERT(DATE, GETDATE())
SELECT *
FROM MySQL2005LinkedServer.SomeDB.dbo.SomeTable
WHERE SomeDatetimeField < @MyDate
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
OLE DB provider "SQLNCLI10" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" returned message "The scale is invalid.".
Run Code Online (Sandbox Code Playgroud)
“比例无效”显然是因为本机客户端将 DATE 数据类型传递回链接服务器,而且由于它是 SQL 2005,它不知道如何处理它。对 2008 年服务器运行相同的查询效果很好 - SQL Server 能够毫无问题地比较 DATE 和 DATETIME 数据类型。
这是我的问题 - Native Client 不会自动将“2009-11-09”的 DATE 值转换为“2009-11-09 00:00:00.000”的 DATETIME 以便之前版本的SQL Server 不会被它呛到吗?
sql-server datetime date sql-server-2008 sql-server-native-client
在SQL Server中,无法从存储过程的结果中动态创建临时表,ala:
CREATE TABLE #temptable AS
EXEC spMyStoredProc
Run Code Online (Sandbox Code Playgroud)
要么
EXEC spMyStoredProc INTO #temptable
Run Code Online (Sandbox Code Playgroud)
或类似的东西.相反,您必须事先知道SP布局,并且必须执行以下操作:
CREATE TABLE #temptable (col1 INT, col2 VARCHAR(255))
INSERT INTO #temptable
EXEC spMyStoredProc
Run Code Online (Sandbox Code Playgroud)
是否存在功能性原因?可能是SQL Server的限制?或者它只是尚未添加到SQL规范中的东西,我可以抱有希望有一天它们会支持它吗?
我有一个SQL Server表,其中包含我的程序需要"跟进"的订单(调用web服务以查看是否已完成某些操作).我的应用程序是多线程的,可以在多个服务器上运行实例.目前,每隔一段时间(在线程计时器上),该过程ORDER BY NEWID()
从"未确认"订单列表中随机选择100行并检查它们,标记任何成功返回的行.
问题是线程之间以及不同进程之间存在很多重叠,并且它们无法保证很快就会检查新订单.此外,一些订单永远不会被"确认"并且已经死亡,这意味着它们会妨碍需要确认的订单,如果我一遍又一遍地选择它们,会减慢流程.
我更喜欢的是系统地检查所有未完成的订单.我可以想到两个简单的方法:
我还缺少其他任何想法吗?这甚至有意义吗?如果我需要澄清,请告诉我.
结果:
我最终做的是在我的表中添加一个LastCheckedForConfirmation列,其中包含已完成的订单,我添加了一个存储过程,使用GETDATE()更新单个未确认的行并踢出订单号,以便我的进程可以检查它.它尽可能多地旋转(假设进程愿意运行的线程数),并使用存储过程为每个线程获取新的OrderNumber.
要处理"不要尝试行太多次或太旧时"的问题,我这样做了:如果"自上次尝试以来的时间">"创建和上次尝试之间的时间",SP将只返回一行,因此,每次再次尝试之前需要两倍的时间 - 首先等待5秒,然后是10秒,然后是20,40,80,120,然后在尝试15次(6小时)后,它会放弃该命令SP永远不会再回来了.
感谢大家的帮助 - 我知道我这样做的方式并不理想,我很欣赏你指点正确的方向.
猜猜我处境很复杂.继承人现场.
我在SQL Server中有3个表.
报名,学生,课程.(仅供参考,没有外键)
表格列为
Student - StudentId,StudentName
Course - CourseId,CourseName
Enrollment - EnrollmentId,StudentId,CourseId,CourseResult
样本数据
学生 - s1,Sid
课程 - c1,科学
入学 - 1,s1,c1,80
我想要一个SQL查询,选择如下所示的数据
1,s1,Sid,c1,Science,80
我通过多次调用数据库在DAL层中做得很好.但是想在一次通话中和在DB中这样做.
任何人都可以救援!
我有一个应用程序连接到许多SQL Server进行监视和其他任务.目前,我只支持受信任的身份验证,因为我不需要存储任何敏感的内容.我想添加使用SQL身份验证(用户名/密码)的功能.
在会话之间存储这些敏感数据的最佳方法是什么?是否有我可以使用的用户专用证书或加密密钥?是否足够安全使用每个用户随机生成的注册表项来加密此信息?如果有一种方法我可以使用一个键(或创建一个并存储它),使计算机上没有其他用户可以访问它,这是理想的.
我理解加密,所以我不是在寻找一个教程 - 我正在寻找最安全的方法来保护我的应用程序的一个用户的配置数据免受其他用户的影响.
我有一个C#控制台应用程序通过网络访问文件并写入它.我注意到有些文件已损坏并且只写入null.我没有得到任何例外.我使用简单的代码将字节数组写入文件的流.在二进制模式下打开文件时,我看到的都是零,类似于"0:00 00 00 00 10:00 00 00 00".
有谁知道为什么会发生这样的事情?可能存在网络故障,但网络故障应该抛出一些IO异常吗?
如果有人对此有任何想法,请告诉我.
代码示例:
FileInfo fi = new FileInfo(filePath);
using (FileStream fs = fi.Open (FileMode.Create, FileAccess.Write, FileShare.None))
{
fs.Write(byteData, 0, byteData.Length);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试列出我服务器上所有数据库中的所有存储过程,而我似乎无法可靠地过滤掉系统对象.我用的是:
SELECT *
FROM sysobjects
WHERE id > 100
Run Code Online (Sandbox Code Playgroud)
这似乎在除MSDB之外的每个数据库中都能正常工作,MSDB充满了大量具有正常ID的存储过程,但它们是系统存储的过程.据我所知,我无法使用sysobjects表中的任何值过滤掉系统存储过程 - 其他人是否知道可用于过滤的值?
它们都标记为type ="P",这意味着它是一个存储过程,但似乎没有标志来指定它是系统存储过程还是用户存储过程.我可以使用sys.objects视图并过滤"IsMsShipped = 0",但我想要的东西也适用于SQL 2000,所以如果可能的话,我更喜欢使用较旧的视图(如sysobjects).
我不是在寻找回滚 - 我知道它是如何工作的.
TFS是否支持完全销毁办理登机手续?说我不小心检查了我的整个MP3库到存储库(ala Eric Sink的例子) - 我知道我可以从存储库中删除这些,或者如果我进行更改,我可以回滚(恢复以前的版本),但我可以实际上完全取消了办理登机手续的证据?
我知道我不应该这样做 - 我对为什么这是一个坏主意的原因不感兴趣 - 但只是TFS支持它.
这是一个巨大的怪物,它进入SP所以变量是可用的:
SELECT OwnerName, SUM(AmountPaid) AS Paid, SUM(AmountOwedComplete) AS Owed, SUM(AmountOwedThisMonth) AS OwedMonth,
SUM(PaidForPast) AS PaidPast, SUM(PaidForPresent) AS PaidPresent, SUM((AmountPaid - PaidForPast - PaidForPresent)) AS PaidFuture, [Description] FROM (
SELECT OwnerName, AmountPaid, AmountOwedComplete, AmountOwedThisMonth, PaidForPast, [Description],
(SELECT CASE WHEN (AmountPaid - PaidForPast) < ABS(AmountOwedThisMonth) THEN AmountPaid - PaidForPast
ELSE ABS(AmountOwedThisMonth) END) AS PaidForPresent
FROM (
SELECT OwnerName, AmountPaid, AmountOwedTotal - AmountPaid AS AmountOwedComplete,
AmountOwedThisMonth,
(SELECT CASE WHEN (AmountPaid < ABS((AmountOwedTotal - AmountPaid)) + AmountOwedThisMonth)
THEN AmountPaid ELSE ABS((AmountOwedTotal - AmountPaid)) + …
Run Code Online (Sandbox Code Playgroud) 当我在SQL Server集群上运行Profiler跟踪时,我注意到它每分钟都执行"SELECT @@ SERVERNAME".我总是认为故障转移群集服务对它做了一些事情,或者只是用它来确认网络名称和IP组合是否设置正确.这种情况不会在我的非群集实例上每分钟发生一次,只会发生在故障转移群集中.
更让人感到好奇的是,我使用sp_dropserver/sp_addserver覆盖了集群实例的名称,并且根本没有任何不良影响 - 即使集群实例名称与预期的网络/实例组合不匹配,两者都是集群经理和SQL Server看起来完全没问题.
这只是双重问题 - 为什么不断查询它,如果你不打算对它做任何事情?谁能在这里对管道有所了解?
sql-server cluster-computing failovercluster windows-server-2008
sql-server ×7
.net ×4
t-sql ×2
c# ×1
cryptography ×1
date ×1
datetime ×1
debugging ×1
encryption ×1
filestream ×1
hash ×1
join ×1
queue ×1
sql ×1
temp-tables ×1
tfs ×1
vb.net ×1
winforms ×1