随笔分类 -  mssql

上一页 1 2 3 4 5 6 7 8 9 ··· 24 下一页
摘要:企业级的数据库应用大多部署在RAID磁盘阵列的服务器上,这样能提高磁盘的访问性能,并能够实现容错/容灾。RAID(冗余磁盘阵列),简单理解,就是拿一些廉价的硬盘来做成阵列。其目的无非是为了扩展存储容量,提升读写性能,实现数据冗余(备份容灾)。就像很早就有老外拿N台旧PC,做成一个强大的“服务器集群”。RAID技术诞生于1987年,由美国加州大学伯克利分校提出。主流的大概可以分为几个级别:RAID 0,RAID 1,RAID 5,RAID 10 。配置起来也不是很复杂,有兴趣和条件的朋友可以找相关的资料,自己动手实践。SQL Server 2005常用的有几个级别0,1,5,10 下面我来简单说 阅读全文
posted @ 2013-04-03 15:24 qanholas 阅读(1289) 评论(2) 推荐(2) 编辑
摘要:简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变得十分重要了。本文从旨在从性能的角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。聚集索引所在的列或列的组合最好是唯一的 这个原因需要从数据的存放原理来谈。在SQL Server中,数据的存放方式并不是以行(Row)为单位,而是以页为单位。因此,在查找数据时,SQL Server查找的最小单位实际上是页。也就是说即使你只查找一行很小的数据,SQL Server也 阅读全文
posted @ 2013-03-26 10:25 qanholas 阅读(311) 评论(0) 推荐(0) 编辑
摘要:简介 SQL Server每个表中各列的数据类型的选择通常显得很简单,但是对于具体数据类型的选择的不同对性能的影响还是略有差别。本篇文章对SQL Server表列数据类型的选择进行一些探索。一些数据存储的基础知识 在SQL Server中,数据的存储以页为单位。八个页为一个区。一页为8K,一个区为64K,这个意味着1M的空间可以容纳16个区。如图1所示: 图1.SQL Server中的页和区 如图1(PS:发现用windows自带的画图程序画博客中的图片也不错)可以看出,SQL Server中的分配单元分为三种,分别为存储行内数据的In_Row_Data,存储Lob对象的LOB_Data,存储 阅读全文
posted @ 2013-03-26 10:24 qanholas 阅读(367) 评论(0) 推荐(0) 编辑
摘要:有关T-SQL的10个好习惯1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。 而额外的IO这点显而易见,当查找不需要的列时自然会产生不必要的IO,下面我们通过一个非常简单的例子来比较这两种差别,如图1所示。图1.*带... 阅读全文
posted @ 2013-03-26 10:19 qanholas 阅读(521) 评论(1) 推荐(1) 编辑
摘要:SELECT referencing_schema_name +'.'+ referencing_entity_name AS ReferencedEntityName, referencing_class_desc AS ReferencingEntityDescription FROM sys.dm_sql_referencing_entities ('dbo.BZLIST', 'OBJECT'); GO 阅读全文
posted @ 2013-03-23 11:23 qanholas 阅读(314) 评论(0) 推荐(0) 编辑
摘要:用Windows Storage Server 2008做iSCSI存储服务器Windows Storage Server 2008(以下简称WSS2008)是Windows Server 2008系列中的存储服务器版本,是企业级的文件服务器平台,支持多Administrator文件存储相关的优化特性、副本管理,以及iSCSI功能。简单来说,就是可以在普通的服务器上,安装上WSS2008,可以作为iSCSI存储服务器来说。而在以前,存储服务器的硬件、软件成本都非常的昂贵,有了WSS2008,构建低成本、易于管理的存储服务器成为可能。本节将介绍WSS2008做iSCSI服务器及其在网络中的应用。 阅读全文
posted @ 2013-03-15 15:59 qanholas 阅读(1379) 评论(0) 推荐(0) 编辑
摘要:在项目中,大家可能都遇到过,需要把十进制转换为其他进制的情况,google上一搜,已经有很多2进制、8进制、16进制和十进制的转换方法。但是在一些项目中,这些可能无法满足要求,可能需要17、18甚至是32、36进制和十进制的转换,那么我们应该怎么办呢?不可能为每一种进制都去写一个函数,那样可不是明智之举。所以我这里提供一个十进制与N进制之间的互转函数(N<=32)。N进制函数1、准备工作在写N进制函数之前,需要有一个用于存储表示N进制字符的基础表,这里我用一个表函数表示:CREATE FUNCTION xavi.fn_NSystemTable()RETURNS @temp TABLE ( 阅读全文
posted @ 2013-03-14 10:20 qanholas 阅读(747) 评论(0) 推荐(0) 编辑
摘要:SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制。数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像服务器。但缺点是配置复杂,镜像数据库中的数据不可见(在SQL Server Management St 阅读全文
posted @ 2013-03-13 11:32 qanholas 阅读(465) 评论(0) 推荐(0) 编辑
摘要:SQL Server2005同步复制设置一、前言本文介绍的数据库同步设置步骤仅为可行性方案,中间可能走了弯路。由于公司内部的网络环境没有现场的复杂,加之对SQL Server2005了解不多,有些部分没有足够的时间去测试。现提供现场的状况以便于技术部可以在公司内部适当的模拟现场的直实情况。现场状况:l 各数据库服务器不在同一个网段内,主服务器192.168.1.XXX,子服务器192.168.10.XXX。l 由于没有域名服务器,各服务器之间可以互相Ping通对方的IP地址,Ping对方的机器名失败其它状况(如有域名服务器,在同一网段内)须逐一测试。二、同步设置之前l 在SQL Server2 阅读全文
posted @ 2013-03-12 16:55 qanholas 阅读(2070) 评论(0) 推荐(0) 编辑
摘要:服务器的环境是Server2008+SQL2008,做本机的发布,再推送到本机,可是总提示,“日志读取代理器未运行”错误提示:进程无法在“WIN-XXX”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20011)获取帮助:http://help/MSSQL_REPL20011无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源: MSSQLServer,错误号: 15517)获取帮助:http://help/15517进程无法在“WIN-XXX”上执行“sp_replcmd 阅读全文
posted @ 2013-03-12 16:11 qanholas 阅读(6885) 评论(0) 推荐(1) 编辑
摘要:sp_removedbreplication '数据库名称' 阅读全文
posted @ 2013-03-11 08:50 qanholas 阅读(757) 评论(0) 推荐(0) 编辑
摘要:费了半天劲,今天终于装好SQL Server2012了。按照MSDN中的新特性资料(Columnstore Indexes for Fast DW QP SQL Server 11)。尝试了下ColumnStore Index。ColumnStore Index按照其字面意思所示。是基于列存储的索引。这个概念如图1所示。 图1.ColumnStoreIndex和基于行的Index比较 ColumnStoreIndex是按照列存入页当中,而不是按照传统的以行为单位存入页。因此带来的好处可以归结如下: 以往的数据按照行存储,select哪怕只有一列,也会将整个行所在的页提取出来,而使用基于列的索. 阅读全文
posted @ 2013-03-08 08:54 qanholas 阅读(620) 评论(0) 推荐(1) 编辑
摘要:随着大数据时代的到来,日益增长的数据给数据库带来了越来越大的压力。据统计现在我们每天大概将会产生2.5 quintillion bytes的数据,大数据时代的数据查询效率引起了越来越多的关注。SQL Server 2012新增加了列存储索引,微软称这是其独有的特性,可以为数据仓库查询建立只读索引,数据被组织成扁平化的压缩形式存储,可以减少 I/O 和内存使用。 下面我们具体研究一下这个列存储索引是不是真的如宣传的那样:比利用常规索引来查询快几百倍。 关于列存储绝对不是一个新名词了,大概可以追溯到上个世纪八十年代,本文主要是来研究SQL Server 2012的列存储索引(Columnsto.. 阅读全文
posted @ 2013-03-08 08:51 qanholas 阅读(3930) 评论(3) 推荐(2) 编辑
摘要:SQL2008 在索引類型中新增了一個名為篩選索引的新成員,線上叢書說明篩選索引是最佳化的非叢集索引,特別適合從已定義的資料子集進行查詢篩選。簡單來說就是在建立非叢集索引時可加上簡單的 WHERE 子句來提高選擇性,竟而提升查詢效能、降低索引儲存和維護成本..等,不多說,馬上來實測看看效果如何。參考線上叢書情境如下:當資料行中的值大部分都是 NULL 且查詢只會從非 NULL 值進行選取時(疏鬆資料行),您可以針對非 NULL 的資料列建立篩選索引。所產生的索引比在相同的索引鍵資料行上定義的全資料表非叢集索引還小,維護成本也比較低。CANCEL_REASON資料行資料內容如下:is null筆 阅读全文
posted @ 2013-03-05 11:09 qanholas 阅读(480) 评论(0) 推荐(0) 编辑
摘要:数据表test如图:要求统计截止到某月的总额。。。sql:方法1:?select t2.month,Sum(t1.amount) from test t1 inner join test t2 on t1.month<=t2.month group by t2.month方法2:?select t1.month,(select sum(t2.amount) from test t2 where t2.month<=t1.month) from test t1 阅读全文
posted @ 2013-03-04 17:34 qanholas 阅读(441) 评论(0) 推荐(0) 编辑
摘要:之前看了园子里的宋大侠《浅谈SQL Server 对于内存的管理》的文章,里面讲到NUMA架构,究竟NUMA架构是啥东西网上的资料说得让人一头雾水刚好上星期在MSDN上找到一篇关于NUMA架构的文章,文章是2011年写的,现在分享给大家o(∩_∩)o文章:SQL SERVER在NUMA架构下实现性能最佳化就目前而言,CPU主频速度的迅速提升以及CPU数量的高速增长,并没有能够促使CPU在访问内存时的速度有所长进。尽管L3 Cache的提出解决了部分问题,不过,CPU访问内存速度慢的现象并未有所改观,瓶颈依然存在。为了更有效的解决CPU访问内存的速度问题,工业界引入了NUMA概念首先介绍一下 N 阅读全文
posted @ 2013-03-04 16:01 qanholas 阅读(983) 评论(0) 推荐(0) 编辑
摘要:1.跟踪标记用于临时设置特定服务器的特征和关闭特定行为。跟踪标记经常用于诊断性能问题,或调试存储过程或复杂的计算机系统。(1)启用指定的跟踪标记。DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ](2)禁用指定的跟踪标记。DBCC TRACEOFF ( trace# [ ,...n ] [ , -1 ] ) [ WITH NO_INFOMSGS ](3)显示跟踪标志的状态。DBCC TRACESTATUS ( [ [ trace# [ ,...n ] ] [ , ] [ -1 ] ] ) [ WITH NO_INFOMS 阅读全文
posted @ 2013-02-28 08:54 qanholas 阅读(1318) 评论(0) 推荐(0) 编辑
摘要:方法一:使用T-SQL语句实现移动数据库--首先让你的数据库状态变成脱机状态ALTER DATABASE Test SET OFFLINE WITH ROLLBACK IMMEDIATE;--执行这个命令之后,SQL Server立即断开所有的连接并回退它们的事务(此时如果有执行未完的事务就容易让数据库丢失)--所有正在执行事务的用户都会接收到一个连接错误,而且他们不能再连接数据库。--查看Test数据库是否存在,对对看数据库名字是否正确SELECT name ,physical_name AS CurrentLocation ,state_descFROM sys.master_files- 阅读全文
posted @ 2013-02-28 08:50 qanholas 阅读(920) 评论(0) 推荐(0) 编辑
摘要:在我们编写程序的时候,有时候要进行复杂的查询时,就会出现执行sql时间过长,引起页面执行不了并提示执行脚本超时,这就是我们遇到超时异常。超时异常分两种情况:一种,是连接超时;一种,是执行超时。前者,通过SqlConnection.ConnectionTimeOut进行设置。后者,通过SqlCommand.CommandTimeOut进行设置。SqlConnection.ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。等待连接打开的时间(以秒为单位)。默认值为 15 秒。SqlCommand.CommandTimeout获取或设置在终止执行命令的尝试并生 阅读全文
posted @ 2013-02-26 15:17 qanholas 阅读(8479) 评论(0) 推荐(2) 编辑
摘要:在进行数据持久化的时候,我们会经常用到事务处理。一般情况下,ADO.NET中的事务处理就能够满足我们的需要,但是,ADO.NET中的事务不能同事对多个数据库连接进行原子性的操作;如果在你的业务环境中存在多个数据库、文件写入等操作,同时需要保证数据完整性和一致性的时候,你可以考虑使用.NET提供的分布式事务处理。 使用分布式事务处理,需要Windows系统的支持,所以,我们需要将系统的MSDTC服务开启。步骤:管理工具>组件服务;依次展开 控制台根节点>组件服务>计算机>我的电脑;在“我的电脑”节点上右键打开“属性”;在选项卡中勾选“使用本地协调器”,然后点击“确定”按钮 阅读全文
posted @ 2013-02-03 13:44 qanholas 阅读(544) 评论(0) 推荐(1) 编辑

上一页 1 2 3 4 5 6 7 8 9 ··· 24 下一页