随笔分类 -  SQL Server

SQL Server数据库相关
摘要:所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录孤立帐户的产生一般是一下两种: 1.将备份的数据库在其它机器上还原; 2.重装系统或SQL SERVER之后只还原了用户库解决方法是使用sp_change_users_login来修复sp_change_users_login的用法有三种用法1: exec sp_change_users_login 'REPORT'列出当前数据库的孤立用户用法2: exec sp_change_users_login ' 阅读全文
posted @ 2014-04-02 11:54 Wolves 阅读(516) 评论(0) 推荐(0)
摘要:简介 本系列文章的上一篇对复制是什么做了一个概述。本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式。模式的选择 选择复制的模式取决于多个方面。首先需要考虑具体的业务需求,在此之后还需要考虑硬件和网络的限制。对于业务需求来说考虑的角度可以分为两个部分:自治和延时。自治是指”数据不被影响的程度”,比如说一个业务场景:公司的总部在北京,发布服务器和分发服务器全在总部,各个地区的分部有订阅服务器,使用快照复制来接收推送订阅总部每个月一次的公司员工通讯录。在这个业务场景中,订阅服务器仅仅是接收发布服务器发布的通讯录信息,对于这些信息的修改是不会回传给总部服务器的 阅读全文
posted @ 2013-12-06 17:08 Wolves 阅读(318) 评论(0) 推荐(0)
摘要:简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性。使用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨。(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽,因此在不考虑个人羞耻感的前提下,本系列文章中的一些图片继续使用mspaint)。复制是什么 复制,英文是Replication,这个词源自于拉丁文re 阅读全文
posted @ 2013-12-06 17:03 Wolves 阅读(285) 评论(0) 推荐(0)
摘要:在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述。但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性。本文着重对SQL Server的复制进行阐述。复制? 复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据。比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复制到位于地球另一侧的另外一个数据中心中。因此,由于复制所提供的功能,复制可用被用来剥离负载,用于做数据冗余,直至把复制用于作为高可用性拓扑中的一个环节。(切记,复制 阅读全文
posted @ 2013-12-06 16:48 Wolves 阅读(399) 评论(0) 推荐(0)
摘要:简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性。本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色。日志损坏 日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽量挽救数据,那么感觉一定是非常好的:-),下面我们来了解几种日志损坏的情况下的恢复情况。1.数据库正常关闭,日志损坏。 当数据库正常关闭时,日志损坏就不是那么重要了,因为此时数据库中所有提交的事务对应的脏数 阅读全文
posted @ 2013-12-06 15:40 Wolves 阅读(342) 评论(0) 推荐(0)
摘要:简介 生产环境下的数据是如果可以写在资产负债表上的话,我想这个资产所占的数额一定不会小。而墨菲定律(事情如果有变坏的可能,无论这种可能性有多小,它总会发生)仿佛是给DBA量身定做的。在上篇文章介绍的简单恢复模式下,从最近一次备份到当前的数据都会存在丢失的风险。而完整备份模式使得数据丢失的风险大大减少。本文主要介绍在完整备份模式下概念原理和日志所处的角色。完整(Full)恢复模式 完整恢复模式通过将对数据库的任何修改记录到日志来给予数据最大程度的保护。在完整恢复模式下,日志的作用不仅仅是保证了数据库事务的ACID。并且还可以使数据恢复到在日志范围内的任何时间点。 在上一篇文章中说过,在简单恢复模 阅读全文
posted @ 2013-12-06 15:39 Wolves 阅读(307) 评论(0) 推荐(0)
摘要:简介 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性。并不承担具体的恢复数据的角色。正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在开始文章之前,首先要了解SQL Server提供的几种不同备份类型。SQL Server提供的几种备份类型 SQL Server所提供的几种备份类型基本可以分为以下三种(文件和文件组备份以及部分备份不在本文讨论之列): 1.完整(Full)备份:直接将所备份的数据的所有区(Extent)进行复制。这里值得注意的有2点: 完整备份并不像其名字“完整”那样备份所有部分,而是仅备份数据库本身,而不备份日 阅读全文
posted @ 2013-12-06 15:37 Wolves 阅读(834) 评论(0) 推荐(0)
摘要:简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID中的原子性(A)和持久性(D),还大大减少了IO操作,把对数据的修改提交到磁盘的工作交给lazy-writer和checkpoint.本文主要讲述了SQL Server修改数据时的过程以及相关的技术。预写式日志(Write-Ahead Logging (WAL)) SQL Server使用了WAL来确保了事务的原子性和持久性.实际 阅读全文
posted @ 2013-12-06 15:36 Wolves 阅读(259) 评论(0) 推荐(0)
摘要:简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一。因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback)。从而还部分确保了事务的ACID属性.在SQL Server崩溃时,DBA还可以通过事务日志将数据恢复到指定的时间点。当SQL Server运转良好时,多了解一些事务日志的原理和概念显得并不是那么重要。但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.本系列文章将会从事务日志的概念,原理,SQL Server如何使用日志来确保持久性属性等方面来谈SQ 阅读全文
posted @ 2013-12-06 15:34 Wolves 阅读(268) 评论(0) 推荐(0)
摘要:在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏。可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态。 例如: 上图中。在DB_1中做了完整备份,在Log_1,Log_2处做了日志备份。在Log_2备份之后不久,发生了故障。从Log_2备份到灾难发生时之间的日志。就是结尾日志(Tail of log)。如果不能备份尾端日志,则数据库只能恢复到Log_2备份的点。尾端日志期间所做的改动全部丢失。更详细的概念可以查看我之前关于日志的博文。 下面我们分别来看在SQL Server实例运行良好和SQL Server实例崩溃状态下,备份结尾日志方法。SQL .. 阅读全文
posted @ 2013-12-06 15:29 Wolves 阅读(725) 评论(0) 推荐(0)
摘要:解决办法就是修改一下登陆名:ALTER LOGIN [G-PC\zqwang] WITH NAME=[新的机器名\zqwang];然后查询一下 Service Broker 队列, 里面已经有数据了。 阅读全文
posted @ 2013-07-17 17:52 Wolves 阅读(1360) 评论(0) 推荐(0)
摘要:在一台安装有SQL Server2005的计算机上,更改计算机名后,在发布订阅的时候提示如下错误报告:由于需要需要配置一个发布订阅,可是一直报告:" sql server 复制需要有实际的服务器名称才能连接到服务器,不支持通过别名、ip地址或其他任何备用名称进行连接。请指定实际的服务器名称“XXX”(Replication Utlities)。"解决办法:1、 查看计算机名use master go select @@servername select serverproperty('servername')输出结果如图:前后计算机名称不一致,说明计算机被修 阅读全文
posted @ 2013-07-16 13:46 Wolves 阅读(294) 评论(0) 推荐(0)
摘要:在PowerDesigner 16 中生成的sql语句,在执行的时候报错:对象名sysproperties 无效的错误;造成此问题的原因是由于Sql 2005、2008 删除了系统表 sysproperties 而改用 sys.extended_properties 表所致 , 以下是通过创建sysproperties视图,以及修改powerdesigner sql语句生成模板后,再生成数据库SQL脚本执行,共分为三部:第一步:在Sql 2005/2008 Exec the Sql 创建View 'sysproperties'if exists (select 1 from s 阅读全文
posted @ 2013-05-15 16:44 Wolves 阅读(308) 评论(0) 推荐(0)
摘要:最近遇到一个问题,在测试环境中恢复从正式数据库服务器上备份下来的bak文件后,正式环境里数据库复制的发布、订阅也被带进来了,结果恢复的数据库无法更改表结构,直接删除这些错误的发布会提示订阅没有清理,但删除订阅时又提示订阅服务器不存在。 master执行语句:sp_removedbreplication ‘复制的数据库名’。刷新本地发布后该数据库不应存在的复制就消失了。 sp_removedbreplication 系统存储过程而不更新在分发服务器上的将数据从数据库中删除所有复制对象。 必须在发布数据库上的发布服务器或订阅服务器的订阅数据库上运行存储的过程。------------------. 阅读全文
posted @ 2012-06-09 12:23 Wolves 阅读(1737) 评论(0) 推荐(1)
摘要:OK,我们以一个销售数据库场景开始分区表实战。第一步:建立我们要使用的数据库,最重要的是建立多个文件组。CREATE DATABASE Sales ON PRIMARY (NAME = N'Sales',FILENAME = N'C:\Sales.mdf',SIZE = 3MB, MAXSIZE = 100MB,FILEGROWTH = 10%),FILEGROUP FG1(NAME = N'File1',FILENAME = N'C:\File1.ndf',SIZE = 1MB,MAXSIZE = 100MB,FILEGROWT 阅读全文
posted @ 2011-06-01 10:05 Wolves 阅读(353) 评论(1) 推荐(0)
摘要:分区方案对表和索引进行分区的第二步是创建分区方案。分区方案定义了一个特定的分区函数将使用的物理存储结构(其实就是文件组),或者说是分区方案将分区函数生成的分区映射到我们定义的一组文件组。所以分区方案解决的是Where的问题,即表的各个分区在哪里存储的问题。分区方案的创建语法如下:CREATE PARTITION SCHEME partition_scheme_nameAS PARTITION partition_function_name[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )[ ; ]分区方案语法的相关解释:1, 创 阅读全文
posted @ 2011-06-01 09:58 Wolves 阅读(389) 评论(1) 推荐(0)
摘要:在谈论分区表这个话题之前,先和大家分享一个案例:2008年秋天的某天,我的团队接到成都市XX局一个SQL调优的ESS单子。客户反映查询统计一次各地市局上报的数据汇总,需要6到15秒才能获得真正想要的数据,当我和销售人员赶到客户数据中心现场后,发现里面布置了很多柜式服务器,每台服务器都是8核16G内存。和相关技术负责人沟通以及演示业务系统之后,可以肯定不是服务器性能的问题,我详细分析了他们的数据库,统计慢的几张表往往一周的上报数据便会增加1百多万行,导致他们这个系统刚上线没多久,某些表产生的数据已经在2000万行以上,最终我提出了优化方案,业务逻辑层采用存储过程代替普通的SQL语句,并启用相关开 阅读全文
posted @ 2011-06-01 09:57 Wolves 阅读(414) 评论(1) 推荐(1)
摘要:写在前面Synchronization Services for ADO.NET 是微软推出的同步框架( Microsoft Synchronization Framework)中的一员,也是其重要的组成部分。使用它,我们实现基于数据库的数据智能同步,即:从客户端 的SSCE(SQL Server Compact Edition)数据库 至服务器端 数据库(SQL SERVER或其他数据库,如Oracle等) ,我们可以进行单向、或者双向的数据智能同步。从产品的构架灵活度,提供的各种特性、以及稳定性能等来说,想要将Synchronization Services for ADO.NET理解透彻 阅读全文
posted @ 2010-11-29 15:10 Wolves 阅读(562) 评论(1) 推荐(0)
摘要:代码 阅读全文
posted @ 2010-10-14 15:37 Wolves 阅读(377) 评论(0) 推荐(0)