小编Sql*_*yan的帖子

我应该在哪里存储我的应用程序的"激活"密钥?

我已经写了一个应用程序,我想为它添加一个注册码/序列号(我在最小的不方便上很重要 - 这篇Eric Sink文章中的#4#).我的问题是,一旦申请注册,存储"激活"的位置.据我了解,我在将密钥存储在公共场所之间进行权衡,所有用户都可以将其读取(但需要管理员权限才能保存)并存储每个用户的激活(但是每个用户都在计算机必须独立激活).这给了我两个选择:

  1. 某些具有本地管理员权限的用户可以激活该产品.激活存储在HKLM,程序文件文件夹或所有用户都可以读取的其他位置,并为所有用户激活产品.
  2. 用户(具有或不具有管理员权限)激活产品.激活存储在以用户为中心的位置(每用户app.config,HKCU等).优点是用户不必是管理员.缺点是,如果有6个用户使用计算机,则每个用户都必须激活产品.他们每个都可以重复使用相同的序列,但他们仍然必须输入它.

这真的是权衡吗?如果是的话,其他人做了什么?作为开发人员,我习惯于成为本地管理员,但在现实世界中,我不希望我的许多企业用户成为本地管理员,这使我倾向于选项2.计算机是否经常不共享够了,我不应该担心?

再说一遍,我不是在询问如何实际注册计算机 - 我并不担心.我只打算将所提供的密钥与校验和进行校验,因为我希望尽可能无创.

windows activation registration

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

是否可以一次将整个VB.NET DataTable插入SQL Server

我在VB.NET中有一个SQLClient.DataSet,我想将整个内容插入到SQL Server表中,而不必执行以下操作:

For Each dr as Datarow in MyDataset
  Dim sc As New SqlCommand("INSERT INTO MyNewTable " & _
                            "VALUES (@column1, @column2)", MyDBConnection)
  sc.Parameters.AddWithValue("@column1", dr.Item(0))
  sc.Parameters.AddWithValue("@column2", dr.Item(1))
  sc.ExecuteNonQuery()
Next
Run Code Online (Sandbox Code Playgroud)

由于我已经接近一百万行(所有这些都非常瘦,所以空间不大),我显然不想运行这个循环并生成一百万个INSERT语句.

我知道一个选项是在我最初获取数据时使用链接服务器,因为它来自另一个SQL Server,并且只是从那里进入INSERT.但是,如果我已经在我的应用程序中有数据,是否有更有效的方法来批量插入它?我可以以某种方式将DataTable作为参数传递给SQL Server并让它排序并插入行吗?

sql t-sql vb.net sql-server datatable

10
推荐指数
2
解决办法
5万
查看次数

我应该提供我的应用程序的x64版本吗?

也许我在这里错过了x64平台的一个主要观点,但我的看法是,当大量内存,大指针或其他要求苛刻的时候,x64应用程序只比x86版本(在x64操作系统和硬件上)表现更好.涉及的因素.

但是,除了标准的x86版本之外,我已经开始注意到一些较小的应用程序提供x64版本的安装程序.由于x86在使用WoW的Windows x64上运行得很好,我发布我的应用程序的x64编译版本有什么好处吗?照我看来:

优点:

  • 可能性能更高(但在什么条件下)

缺点:

  • 用于创建/支持的附加构建
  • x64目标中可能存在的错误,这些错误在x86目标中不存在
  • 依赖于x64版本的供应商/操作系统DLL,需要不同的安装清单并引入其他故障排除复杂性

有什么令人信服的理由导致我重新考虑添加我的应用程序的x64编译版本?

windows 64-bit 32bit-64bit

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

VB.NET强类型集合

我想在VB.NET中创建一个集合,但我只希望它接受某种类型的对象.例如,我想创建一个名为"FooCollection"的类,它在各个方面都像一个集合,但只接受"Foo"类型的对象.

我想我可以使用泛型,使用以下语法执行此操作:

    Public Class FooCollection(Of type As Foo)
        Inherits CollectionBase

        ...

    End Class
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时我得到一个错误,我"必须实现一个默认的访问器",所以显然有些东西丢失了.我不想在实例化时指定它接受的类型 - 我希望FooCollection本身特定于它只接受Foo对象.我已经看到它在C#中使用强类型列表完成,所以我可能正在寻找的是VB.NET语法.

谢谢你的帮助!

编辑:谢谢你的回答.这样做,但我想让classtype命名为某种方式,我实际上完成了我正在寻找的以下代码:

Public Class FooCollection
    Inherits List(Of Foo)

End Class
Run Code Online (Sandbox Code Playgroud)

vb.net generics collections class

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

T-SQL相当于Excel"MAX"函数返回两个数字中较大的一个

可能重复:
SQL Server中是否有Max函数需要两个值,如.NET中的Math.Max?

在Excel中,有一个名为"MAX"的函数接受数字并返回集合中最大的数字.T-SQL中是否有一个复制此功能的功能?我找不到一个,我写了一个为我做的UDF,但我觉得值得问.

这是我一直在使用的功能:

CREATE FUNCTION dbo.LargerOf
(
    -- Add the parameters for the function here
    @First FLOAT,
    @Second FLOAT
)
RETURNS FLOAT
AS
BEGIN

    DECLARE @Result FLOAT

    IF @First > @Second
        SET @result = @First
    ELSE
        SET @Result = @Second

    RETURN @Result

END
GO
Run Code Online (Sandbox Code Playgroud)

我不希望任何运气,但我认为我至少要问,而不是将我的功能转移到一大堆新服务器上.谢谢!

t-sql sql-server excel

9
推荐指数
2
解决办法
2万
查看次数

SQL Server - 在创建索引时,为什么我的SPID会被"暂停"但不会被阻止?

我有一个SQL 2005 x64服​​务器,当我尝试对它发出一些查询时(例如,当我尝试创建索引时),我的SPID立即进入"休眠"状态,并且似乎无限期地等待.它没有被阻塞(SP_WHO2中的"BLKBY"列为空),CPU和DiskIO值非常小(每个300以下),并且没有增长.

我的查询可能还在等什么?如果我在表格中执行SELECT*,我会在一分钟左右的时间内返回所有百万行,因此它不会阻止表访问,甚至(似乎)表争用.

关于我可以查看的其他事情的任何想法?我只需要放弃并重新启动我的SQL实例吗?:)

详细信息:我正在从SSMS中的另一个选项卡运行CREATE INDEX,并且它永远不会返回 - 它只显示"正在执行"并且永远不会返回,所以我不认为该过程已被放弃.

sql-server suspend

9
推荐指数
1
解决办法
4万
查看次数

具有不同文件大小的哈希冲突是否与文件大小相同?

我正在散列大量文件,并且为了避免哈希冲突,我还存储了文件的原始大小 - 这样,即使存在哈希冲突,文件大小也几乎不可能相同.这是声音(哈希冲突同样可能是任何大小),或者我是否需要另一条信息(如果碰撞更可能与原始信息的长度相同).

或者,更一般地说:无论原始文件大小如何,每个文件是否都可能产生特定的哈希值?

hash hash-code-uniqueness hash-collision

9
推荐指数
2
解决办法
3612
查看次数

当Interlocked类可用时,为什么在.NET中使用SyncLocks进行简单操作?

我已经在VB.NET中做了一段时间的简单多线程,并刚刚进入我的第一个大型多线程项目.我总是使用Synclock声明完成所有事情,因为我认为没有更好的方法.

我刚刚了解了这个Interlocked类 - 它看起来好像这一切:

Private SomeInt as Integer
Private SomeInt_LockObject as New Object

Public Sub IntrementSomeInt
    Synclock SomeInt_LockObject
        SomeInt += 1
    End Synclock
End Sub
Run Code Online (Sandbox Code Playgroud)

可以用单个语句替换:

Interlocked.Increment(SomeInt)
Run Code Online (Sandbox Code Playgroud)

这会在内部处理所有锁定并修改数字.这比为简单操作编写自己的锁要简单得多(更长时间运行或更复杂的操作显然仍然需要自己的锁定).

当我可以使用这些Interlocked方法完成同样的事情时,我是否有理由使用专用锁定对象来进行自己的锁定?

.net multithreading locking interlocked synclock

9
推荐指数
2
解决办法
8336
查看次数

在元数据位于SQL数据库中时存储/检索数百万个文件的最佳方法

我有一个流程,最初将生成3-4百万个PDF文件,并以80K /天的速度继续.它们每个都很小(50K),但我担心的是如何管理我生成的文件总量以便于查找.一些细节:

  1. 一旦生成了文件,我将有一些其他步骤来运行,并且会有一些服务器参与,所以我需要在生成文件时监视这些文件.
  2. 生成后,通过我编写的查找过程,文件将可用.基本上,我需要根据订单号来提取它们,订单号对于每个文件都是唯一的.
  3. 在任何时候,可以重新提交现有订单号,并且生成的文件将需要覆盖原始副本.

最初,我曾计划将这些文件全部写入NAS上的单个目录,但我意识到这可能不是一个好主意,因为它们有数百万个,Windows可能无法正常处理百万文件查找.我正在寻找一些建议:

  1. 单个文件夹好不好?永远不会列出这些文件 - 它们只能使用我已经确定的文件名的System.IO.File来检索.
  2. 如果我做一个文件夹,我可以使用System.IO.DirectoryWatcher查看新文件,即使有那么多文件,还是会因为那么多文件而变得迟钝?
  3. 它们应该作为BLOB存储在SQL Server数据库中吗?由于我需要通过参考值检索它们,这可能更有意义.

谢谢你的想法!

.net vb.net large-data-volumes file-management

8
推荐指数
3
解决办法
6456
查看次数

SQL Server - 如何确定索引是否未被使用?

我有一个高需求的事务数据库,我认为是过度索引.最初,它根本没有任何索引,因此为常见过程添加一些索引会产生巨大的差异.但是,随着时间的推移,我们已经创建了索引来加速单个查询,一些最流行的表上有10-15个不同的索引,在某些情况下,索引只是略有不同,或者是相同的列以不同的顺序.

是否有一种直接的方式来监视数据库活动并告诉是否有任何索引不再被命中,或者它们的使用百分比是多少?我担心创建索引是为了加速单个每日/每周查询,甚至是不再运行的查询,但每次数据更改时索引仍然必须保持最新.

对于高流量表,这是十几次/秒,我想消除压缩数据更新的索引,同时只提供边际改进.

database sql-server indexing performance

8
推荐指数
2
解决办法
7360
查看次数