回到目录 前几讲说了一下通过sqlserver的发布与订阅来实现数据的同步,再通过EF这个ORM架构最终实现架构系统的读写分离,而在使用发布与订阅来实现数据同步时,需要我们注意几点,那就是当操作被使用在“事务上下文”时,你的同步操作有可能会被延时,嘟嘟! 这个不难理解,我们都知道事务有一些级别,而最高级别serializable 又是.net TransactionScope默认的级别,所以,在程序开发中,只要用了事务,基本都是serializable,而这个级别是最安全的,当然对于SQL来说,…
回到目录 触发器在过去的10年中,即存储过程和ado.net称霸江湖期间是那么的重要,而现在,trigger显得不是那么必要的,我们很少将复杂的业务写在SQL里,当然也会没有机会写到trigger里了,可对于数据库本身来说,这东西还是要说说的,尤其是一些特殊场合,看看下面的触发器使用场合:…
回到目录 在SQLSERVER中每个会话,即每个查询分析器窗口都会产生一个SQL进程,对于那些持续时间短的进程,它们转瞬即失,而对于持续时间比较长的,我们需要希望查看它的运行状态,就可以借助SQL提供的sp_who命令,下面是对它的具体介绍,主要选自MSDN. sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]你可以在sp_who后面加你的SPID号(sessionID),登陆名,线程状态等…
回到目录 当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”. HOLDLOCK(保持锁) 此选项被选中时,SQL Server…
回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以每天0点为指定数据库做一个完整的备份,每周未在0点去清理上一周的备份文件,这样可以避免磁盘容量无穷的增长. 备份数据库 使用了SQL-管理-维护计划-维护计划向导…
回到目录 MultipleActiveResultSets可以使数据库连接复用,但当你上了moebius这种集群工具后,这个选项不能开启(默认是false),当你使用EF等ORM工具时,这个选项会默认的加上了,它是为了改进程序的性能,好处就是怕数据库的连接资源被耗尽了,使用方法很简单,只需要把它加到数据的连接字符串中即可. 例如:server=(local);Integrated Security = true;database=test;MultipleActiveResultSets=tru…
当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”. HOLDLOCK(保持锁) 此选项被选中时,SQL Server 会将此共享…
回到目录 关于锁的相关知识,大家可以看我的这篇文章<知方可补不足~Sqlserver中的几把锁和.net中的事务级别> 死锁我想大家都知道,当一个对话(线程)占用一个资源时,别一个线程也同时去访问它,并且其中一个优化级高的对话将SQL锁状态提升为X锁(排它锁)后,其一个对话将会被作为“牺牲品”抛弃,这种现象在SQLSERVER中就叫做死锁,引起死锁的原因有很多,一般在网上被前人总结为四点 1.互斥使用(资源独占)  一个资源每次只能给一个进程使用 2.不可强占(不可剥夺)     资源申请者不…
我们在开发系统的时候,经常会遇到高并发的问题,还有高可用性和安全性方面的考虑,需要用读写分离的方案来解决问题.也就是在我们使用数据库比较多,更新少而查询比较多的情况下使用读写分离,实现提高性能,减少数据库压力. 为啥要用读写分离呢? 因为数据库的“写”操作是比较耗时的 但是数据库的“读”操作却很快. 所以读写分离,解决的是,数据库的写入,影响了查询的效率. 1.读写分离 基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库处理SELECT查询操作…
原文:SqlServer发布订阅错误收集 目录 1. SqlServer发布订阅错误收集 1.1. Message:脚本对于表"dbo.table"失败. 1.1.1. 错误消息 1.1.2. 处理方法 1.2. 由于出现操作系统错误 3,进程无法读取文件D:\\XXXX\\X.pre (源: MSSQL_REPL,错误号: MSSQL_REPL20024) 1.2.1. 错误消息 1.2.2. 解决方法 1.3. 应用复制的命令时在订阅服务器上找不到该行 1.3.1. 错误消息 1.…