图片 6

form增删改查,已成功与服务器建立连接

SQL Server — 已成功与服务器建立连接,但是在登录过程中发生错误

在设计一个新系统的Table
Schema的时候,不仅需要满足业务逻辑的复杂需求,而且需要考虑如何设计schema才能更快的更新和查询数据,减少维护成本。

效果展示:

最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash。换成IIS下运行的时候,IIS crash。之前的连接是没问题的,后网上找了资料,根据牛人所说的方案解决了。

模拟一个场景,有如下Table Schema:

图片 1

 

Product(ID,Name,Description)

查询:

1. Exception message

在设计思路上,ID是自增的Identity字段,用以唯一标识一个Product;在业务逻辑上要求Name字段是唯一的,通过Name能够确定一个Product。业务上和设计上有所冲突在所难免,解决冲突的方法其实很简单:将ID字段做主键,并创建clustered
index;在Name字段上创建唯一约束,保证Product Name是唯一的。

图片 2

已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 – 接收到的消息异常,或格式不正确。) —> System.ComponentModel.Win32Exception: 接收到的消息异常,或格式不正确。

这样的Table Schema 设计看似完美:ID字段具有做clustered
index的天赋:窄类型,自增,不会改变;Name上的唯一约束,能够满足业务逻辑上的需求。但是,如果业务人员操作失误,将Product
的 Name 写错,需要将其删除,最简单的方式是使用delete
命令,直接将数据行删除,但是这种方式带来的隐患特别大:如果业务人员一不小心将重要的数据删除,那么,恢复数据的成本可能非常高。如果数据库很大,仅仅为恢复一条数据,可能需要N个小时执行还原操作。如何设计Table
Schema,才能避免在维护系统时出现被动的情况?

可以查询姓名;民族;姓名+民族;都是空的查询全部

 

delete Product
where Name='xxx'

取值取得是姓名:

2. Solution

设计目的:在短时间内恢复被误删除的数据,以使系统尽快恢复

图片 3

以管理员的身份运行“命令管理器”,输入:netsh winsock reset回车即可,这个重置LSP连接

在实际的产品环境中,数据删除操作有两种方式:软删除和硬删除,也称作Logic
Delete 和 Physical
Delete。硬删除是指使用delete命令,从table中直接删除数据行;软删除是在Table
Schema中增加一个bit类型的column:IsDeleted,默认值是0,设置IsDeleted=1,表示该数据行在逻辑上是已删除的。

删除:

3. LSP 相关(来自

Product(ID,Name,Content,IsDeleted,DeletedBy)

图片 4

关于Winsock LSP“浏览器劫持”,中招者一直高居不下,由于其特殊性,直接删除而不恢复LSP的正常状态很可能会导致无法上网所以对其修复需慎重。

软删除实际上是一个Update
操作,将IsDeleted字段更新为1,在逻辑上将数据删除,并没有将数据行从物理上删除。使用软删除,能够保留有限的数据删除的历史记录,以便audit,但是,这可能导致外键关系引用被逻辑删除的数据;如果历史记录太多,这又会导致数据表中有效数据行的密度降低,降低查询速度。

修改:

  先说说什么是Winsock LSP“浏览器劫持”.Winsock LSP全称Windows Socket Layered Service Provider(分层服务提供商),它是Windows底层网络Socker通信需要经过的大门。一些流氓软件可以把自已加进去,就可以截取、访问、修 改网络的数据包,可以随意添加广告,还能获取你的浏览习惯。这里加进的是木马,后果可想而知。而且因为LSP工作在底层,所以无论你用什么浏览器,都逃不 了经过它。而LSP中的dll文件被删除后,就会出现无法上网的情况。

1,能够快速恢复被误删除的数据

先选中查询之后修改:

  LSP服务在注册表中的位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock\Parameters\NameSpace_Catalog5\Catalog_Entries, 默认系统已有LSP,分别负责TCP/IP组件(mswsock.dll)和NTDS组件(winrnr.dll)的正常工作,它们的项分别为 000000000001和000000000002,这两个项表示优先权,如果恶意程序想要劫持,只要将自身的项改为000000000001,将系统 项依次推后即可,这样就可以优先处理恶意程序了。

用户的删除操作是将IsDeleted设置为1,在逻辑上表示删除数据,如果用户由于误操作,将重要数据行删除,那么只需要将IsDeleted重置为0,就能恢复数据。

图片 5

  解决办法:

update Product
set IsDeleted=1
where Name='xxx'  -- or  use ID=yyyy as filter

添加:

  方法1.用360的LSP修复功能来修复。如果提示你的“LSP没有异常,不用修复”,但是你还是上不了网,执行ping命令,在ip地址处会出现(?),无法ping通外网。那么你就用360的“恢复Winsock LSP到初始状态”的功能。

2,每次引用该表时,必须设置filter

图片 6

  方法2.就是大家熟悉的,也就是常用的方法,用LSPFix这个工具在断开网络下修复

任何引用该表的查询语句中,必须设置Filter:IsDeleted=0,为来避免遗漏filter,可以创建视图,不直接引用该表,而是直接引用视图。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图