码迷,mamicode.com
首页 > 数据库 > 详细

数据库高手(DBA专家 ,SSIS,replacation ,tourble shooting)

时间:2015-12-12 01:36:38      阅读:1035      评论:0      收藏:0      [点我收藏+]

标签:

http://www.cnblogs.com/qanholas/category/266780.html

 

 

随笔分类 - mssql

摘要: 很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 .......今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下:测试环境:USETEMPDBGOCREATETABLETB(IDINTIDENT...阅读全文
posted @ 2015-07-13 10:48 qanholas 阅读(44) | 评论 (0) 编辑
摘要: 对于一个数据库完整备份来说,备份的速度很大程度上取决于下面两个因素:读磁盘数据、日志文件的吞吐量,写磁盘数据文件的吞吐量。下图是备份过程中磁盘的 变化情况:读吞吐量读吞吐量的大小取决于磁盘读取数据的速度,而磁盘读取的速度又取决于数据文件在磁盘中的位置。因此,位于不同盘符上不同数据库文件的读 取速度都不相...阅读全文
posted @ 2015-06-23 11:32 qanholas 阅读(51) | 评论 (0) 编辑
摘要: setANSI_WARNINGSOFFDECLARE@TBTABLE( C1NVARCHAR(2))INSERTINTO@TB(C1)VALUES(N‘34324‘--C1-nvarchar(2))SELECT*FROM@TB阅读全文
posted @ 2015-06-19 10:10 qanholas 阅读(21) | 评论 (0) 编辑
摘要: alter database 置疑数据库 set emergencygoalter database 置疑数据库 set single_user with rollback immediategouse mastergoalter database 置疑数据库 Rebuild Log on(name...阅读全文
posted @ 2015-06-04 22:37 qanholas 阅读(36) | 评论 (0) 编辑
摘要: 1.主服务器挂了,备机紧急启动并且开始服务 --备机执行: USE master; ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;2、原来的主服务器恢复,可以继续工作,需要重新设定镜像 --备机执行: USE master;...阅读全文
posted @ 2015-06-03 11:46 qanholas 阅读(21) | 评论 (0) 编辑
摘要: 在大多数情况下,人为更新统计信息可以获得更好的性能。这个文章,我们可以来看下如何检测过期的统计信息。在SQL Server 2005以后的版本里,SQL Server使用ColModCtr对统计的主要列对象进行跟踪。但在SQL server 2005或SQL server 2008里没有对应的DMV...阅读全文
posted @ 2015-05-26 10:11 qanholas 阅读(12) | 评论 (0) 编辑
摘要: 环境:windows server 2003 SP2 + mssql 2000 SP4最近在开发一个报表查询系统,使用到链接数据库技术,由于第一次接触该技术,所以在开发的过程中遇到了重重困难,幸好有百度,幸好有热心的同事,问 题也如愿以偿的解决了。在整个开发过程中使用了两种链接技术:1.ODBC链接方...阅读全文
posted @ 2015-05-13 09:40 qanholas 阅读(29) | 评论 (0) 编辑
摘要: 笔者作为一个菜鸟,没什么好分享的,就把在学习期间的一点小心得拿出来晒晒。学习数据库的时候层突发奇想能不能根据表名直接找出来该表的主键,进而可以进 行排序之类的操作,下面就把自己的具体实现分享给大家吧!1、查询表名(tblstudent为例)的id号select id from sysobjects w...阅读全文
posted @ 2014-09-25 15:38 qanholas 阅读(73) | 评论 (0) 编辑
摘要: 除了MSDB,还需要添加master的权限阅读全文
posted @ 2014-09-05 15:28 qanholas 阅读(33) | 评论 (0) 编辑
摘要: 最近我的两个库出现,出现较多的CXPACKET等待,在网上找了一下资料。其中有篇一个SQL Server专栏作家的文章不错,也解决了我的一些疑问,就翻译在这里。 翻译整理仅用于传播资讯之目的。 原文出处:http://blog.sqlauthority.com/2011/02/06/sql-serv...阅读全文
posted @ 2014-09-01 14:58 qanholas 阅读(48) | 评论 (0) 编辑
摘要: 在用SQL语句创建SQL Server作业时有时出现如下错误:消息515,级别16,状态2,过程sp_add_job,第137行不能将值NULL插入列 ‘owner_sid‘,表‘msdb.dbo.sysjobs‘;列不允许有空值。INSERT失败。语句已终止。这可能与为作业创建的数据库登录ID 有关,...阅读全文
posted @ 2014-08-12 10:29 qanholas 阅读(105) | 评论 (0) 编辑
摘要: SQL SERVER 理论上有32767个逻辑连接,SQL SERVER根据系统自行调配连接池。首先 ,操作系统的用户数:即同时通过网络连接到这台电脑上面的用户限制,以5用户操作系统,搭建的文件服务器为例,去同时访问这个文件服务器的网络用户为5 个。下面说说SQL server,购买数据库有两种方式,...阅读全文
posted @ 2014-08-11 15:28 qanholas 阅读(1945) | 评论 (0) 编辑
摘要: /*unicode编码范围:汉字:[0x4e00,0x9fa5](或十进制[19968,40869])数字:[0x30,0x39](或十进制 [48, 57])小写字母:[0x61,0x7a](或十进制[97, 122])大写字母:[0x41,0x5a](或十进制[65, 90])--根据编码范围来判...阅读全文
posted @ 2014-07-22 14:41 qanholas 阅读(514) | 评论 (0) 编辑
摘要: 原来使用中的sql2005的全文检索的速度总是不如意,尤其是带rank的。今天搜了一下,原来在freetexttable中还有一个参数 top_n_by_rank,是第4个参数。注意还要设置:EXEC sp_configure ‘precompute rank‘, ‘1‘EXEC sp_configu...阅读全文
posted @ 2014-06-23 17:07 qanholas 阅读(91) | 评论 (0) 编辑
摘要: "五一"时进行了系统重装,在没有卸载SQL Server 2008情况下尝试安装SQL Server 2008r2 ,安装提示成功但提示出现几个错误,发现没有找到SSMS,以及在SQL SERVER配置管理器里的服务也只有可怜的一项,瞬间感觉不妙,没办法只能重新卸载安装,在网上无绪找到了几个介绍卸载...阅读全文
posted @ 2014-06-23 15:38 qanholas 阅读(13548) | 评论 (0) 编辑
摘要: 一安装MySQL数据库的ODBC驱动下载MySQL Connector ODBC 3.51.rar单击setup按默认安装即可!如下图所示,在ODBC数据源管理器中看到“MySQL ODBC 3.51 Driver”即表示安装成功!当然看不到,那么你就要重新安装了!当然还有不同的版本!二建立MySQ...阅读全文
posted @ 2014-06-09 16:54 qanholas 阅读(237) | 评论 (0) 编辑
摘要: 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-auto-update- and-auto-create-statistics-options/?utm_source=dailynewsletter&utm_medium=email...阅读全文
posted @ 2014-05-27 15:19 qanholas 阅读(62) | 评论 (0) 编辑
摘要: 使用备份文件初始化日志复制对于大的数据库使用快照初始化既影响性能又花费大量的时间,在某些情况下我们可以使用数据库备份做初始化。1. 首先根据创建的Article建立发布。2.修改 allow initialization from backup的选项为True.3.备份发布数据库。Backup ...阅读全文
posted @ 2014-05-21 16:55 qanholas 阅读(22) | 评论 (0) 编辑
摘要: 进行备份通常会更改数据库,而这又会影响其他备份以及还原这些备份的方式。例如,常规数据备份可以用作一个或多个后续差异备份的差异基准。但是,有时必须 针对特殊目的执行数据备份,并且不应该影响数据库的整体备份和还原过程。为此,SQL Server 2005 引入了仅复制备份,它独立于正常的备份序列。仅复制备...阅读全文
posted @ 2014-05-08 14:23 qanholas 阅读(272) | 评论 (0) 编辑
摘要: 数据库镜像中成功收缩事务日志文件数据库已经运行在数据库镜像的时候怎么收缩事务日志文件呢??我们有一个产品数据库发现事务日志文件已经到到了 60GB,而数据库本身才30GB。需要收缩事务日志文件。经过一个礼拜的观察,平均没有有1.5GB的日志,99%的日志是在晚上产生的,周末有 16GB的日志,看来大部分...阅读全文
posted @ 2014-05-07 15:26 qanholas 阅读(37) | 评论 (0) 编辑
摘要: 目标:主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror和 Replication都切换到备机,而当主机重新启动后,自动充当备机的角色)。环境:五台虚拟机,配置均为 Windows2008Enterprise + SQLS...阅读全文
posted @ 2014-05-04 12:41 qanholas 阅读(82) | 评论 (0) 编辑
摘要: BACKUP LOG jmd8 TO DISK = N‘C:\jmd8_20140429014500.trn‘ WITH NOREWIND, NOUNLOADUSE [JMD8]GODBCC SHRINKFILE (N‘ChaoRan_Log‘ , 1)GO阅读全文
posted @ 2014-04-29 10:00 qanholas 阅读(47) | 评论 (0) 编辑
摘要: 微软linq技术已经出现很久,很多公司已经开始商业使用,作为我们暂时没有用到的人来说,也应该适当的了解下相关知识,但是直到目前网络上对他的看法仍 然是褒贬不一,当然任何事情都不可能完美的,下面就针对大多数人比较关注的效率问题做一次试验,来实实在在的用事实说次话,(由于过年在家无事突发奇想做 的试验也没用...阅读全文
posted @ 2014-04-21 14:03 qanholas 阅读(136) | 评论 (0) 编辑
摘要: 在用了LINQ語法之後的一個月,我幾乎把SQL語法全部拋到腦後了,不過LINQ好用歸好用,但是實際上操作資料庫的還是SQL語法,如果不知道 LINQ語法編譯過後產生怎樣的SQL語法,一不小心效能就會變差,所以今天來記錄三種查詢LINQ所轉換的SQL語法。第一種:參考自:ADO.Net Entity F...阅读全文
posted @ 2014-04-21 13:55 qanholas 阅读(146) | 评论 (0) 编辑
摘要: 我们知道,SQL Server 2005/2008的系统存储过程在正常情况下是无法直接修改的。尽管本文是介绍怎样修改它的,但在这里,我还是建议大家尽量不要去修改它。(好像有点绕 哈...)OK,闲话少说,下面我举个实际案例讲解一下,如对于系统存储过程sp_Monitor,若要运行此存储过程,用户必须是 sysadmin 固定服务器角色的成员。通过执行命令:sp_helptext ‘sp_Monitor‘,我们可以看到,该过程中存在这样的语句:[c-sharp]view plaincopyif(not(is_srvrolemember(‘sysadmin‘)=1))阅读全文
posted @ 2014-04-10 12:49 qanholas 阅读(1078) | 评论 (0) 编辑
摘要: SQL Server 对数据库损坏的错误类型做了细化,在此对几个典型的错误作一下介绍。错误信息是:“在文件 ‘%ls‘中、偏移量为 %#016I64x 的位置执行 %S_MSG 期间,操作系统已经向 SQL Server 返回了错误 %ls。”“The operating systemreturned error %ls to SQL Server during a %S_MSGat offset %#016I64x in file ‘%ls‘.”例如:Msg 823, Level 24, State 3, Line 1The operating system 阅读全文
posted @ 2014-01-16 10:53 qanholas 阅读(236) | 评论 (0) 编辑
摘要: 概要锁升级为表锁插入转换很多细粒度的锁 (如行或页锁) 的过程。Microsoft SQL Server 动态确定何时执行锁升级。作出决定之前,SQL Server 将特定的扫描,整个事务,并且用于锁定在系统中作为一个整体的内存由持有的锁的数目只会保留的锁的数量考虑。通常情况下,SQL Server 默认行为导致位置,这会提高性能,或当必须将过多的系统锁定内存减少到更合理水平,只能在这些时间点发生的锁升级。但是,一些应用程序或查询的设计可能会 触发一次时不太理想,并已呈报的表锁可能会阻止其他用户的锁升级。本文讨论如何确定是否锁升级而导致阻塞和如何处理不需要的锁升级。回到顶端|提供反馈更 多信息如何阅读全文
posted @ 2013-12-14 17:04 qanholas 阅读(160) | 评论 (0) 编辑
摘要: 所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST 。有关 NOLOCK 和 READPAST的一些技术知识点:对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考 虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题。NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。但是这时候一定要注意NOLOCK 和 阅读全文
posted @ 2013-12-14 15:52 qanholas 阅读(65) | 评论 (0) 编辑
摘要: 说明Chaos无法改写隔离级别更高的事务中的挂起的更改。ReadCommitted在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以 更改数据,从而导致不可重复的读取或幻像数据。ReadUncommitted可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。 RepeatableRead在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。 Serializable在DataSet上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。Snapshot通过在一个应用程序 正在修改数据时存储另一个应用程序可以读取的相同数据版本来阅读全文
posted @ 2013-12-14 10:01 qanholas 阅读(55) | 评论 (0) 编辑
摘要: SELECT CONVERT(VARCHAR(100), 列名) FROM Table提示错误:无法执行varchar值到varchar的隐式转换,原因是,由于排序规则冲突,该值的排序规则未经解析。修改为:SELECT CONVERT(VARCHAR(100), 列名 COLLATE Chinese_PRC_CI_AS) FROM Table阅读全文
posted @ 2013-11-28 09:03 qanholas 阅读(115) | 评论 (0) 编辑
摘要: --90兼容模式以上,2005+-- http://raresql.com/2012/10/24/sql-server-how-to-find-who-deleted-what-records-at-what-time/-- Script Name: Recover_Deleted_Data_With_UID_Date_Time_Proc-- Script Type : Recovery Procedure -- Develop By: Muhammad Imran-- Date Created: 24 Oct 2012-- Modify Date: -- Version : 1.2-- No阅读全文
posted @ 2013-11-09 17:06 qanholas 阅读(215) | 评论 (0) 编辑
摘要: DECLARE @dbNameSYSNAME,@schemaNameSYSNAME,@ObjectNameSYSNAME,@sqlNVARCHAR(max)SELECT @dbName=‘DBname‘,@schemaName=‘dbo‘,@ObjectName=‘tablename‘SET @sql=‘SELECT COUNT(1) AS DataCount FROM ‘+@dbName+‘.‘+@schemaName+‘.‘+@ObjectName+‘ WITH (NOLOCK)‘阅读全文
posted @ 2013-11-09 15:32 qanholas 阅读(69) | 评论 (0) 编辑
摘要: 最近遇到了一个看上去很奇怪,分析起来很有意思的死锁问题。这个死锁看上去难以理解。而分析过程中,又使用了很多分析SQL Server死锁的典型方法。记录下来整个分析过程还是很有意义的。问题重现步骤:经过提炼,问题重现的步骤非常简单,在SQL 2008上可以很容易地重现。1. 首先,创建一张表格,上面有一个clustered index,两个non-clustered index。 createtablett(idintidentityprimarykey,achar(36),bchar(36),dvarchar(max))gocreateindexix_a_bcontt(a)include(d)c阅读全文
posted @ 2013-11-09 15:29 qanholas 阅读(249) | 评论 (1) 编辑
摘要: 插入光盘后不要用autorun的安装,使用命令行安装!cd进安装光盘的根目录,输入命令:setup.exe /INSTALLSHAREDDIR="D://Program Files//Microsoft SQL Server//" /INSTALLSHAREDWOWDIR="D://Program Files (x86)//Microsoft SQL Server//"安装即可,其中INSTALLSHAREDDIR为x64部件安装的路径,INSTALLSHAREDWOWDIR为x32部件安装的 路径。切记不可使用默认的setup.exe就安装的方式,一旦进阅读全文
posted @ 2013-11-02 14:24 qanholas 阅读(717) | 评论 (0) 编辑
摘要: 安装如下步骤安装asp.net应用程序开发功能即可==>(WIN7 IIS7)控制面板-->程序和功能-->打开或关闭windows功能-->Internet信息服务-->万维网服务 -->应用程序开发功能选择asp.net,安装即可阅读全文
posted @ 2013-11-01 08:49 qanholas 阅读(12) | 评论 (0) 编辑
摘要: 最近因為在查一個SQL的效能問題,透過sys.dm_os_wait_stats來取得Top的Wait(fromWait statistics, or please tell me where it hurts) ,如下,SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;GO--1.取得目前最高的WaitWITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_w...阅读全文
posted @ 2013-10-19 11:46 qanholas 阅读(827) | 评论 (0) 编辑
摘要: 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计 一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。 如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统 中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将 “地址”这个属性重新拆分阅读全文
posted @ 2013-09-04 08:51 qanholas 阅读(86) | 评论 (0) 编辑
摘要: 很多人都知道SQL注入,也知道SQL参数化查询可以防止SQL注入,可为什么能防止注入却并不是很多人都知道的。本文主要讲述的是这个问题,也许你在部 分文章中看到过这块内容,当然了看看也无妨。首先:我们要了解SQL收到一个指令后所做的事情:具体细节可以查看文章:Sql Server 编译、重编译与执行计划重用原理在这里,我简单的表示为:收到指令 -> 编译SQL生成执行计划 ->选择执行计划 ->执行执行计划。具体可能有点不一样,但大致的步骤如上所示。接着我们来分析为什么拼接SQL 字符串会导致SQL注入的风险呢?首先创建一张表Users:CREATE TABLE [dbo].[U阅读全文
posted @ 2013-09-03 15:51 qanholas 阅读(73) | 评论 (0) 编辑
摘要: Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示如果还为了这个纠结,就 直接看看后面的解说,做决定吧。一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。sql server中的varchar和Nvarchar有什么区别?答:varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。阅读全文
posted @ 2013-09-03 15:48 qanholas 阅读(57) | 评论 (0) 编辑
摘要: 在做项目中,使用了float类型来定义一些列,如:Price,但是发现了很多问题1、当值的位数大于6位是float型再转varchar型的时候会 变为科学技术法显示 此时只好将float型转换成numeric型,再转换成varchar2、float型变量在存入值时,有时值得大小会发生改变。这个现象发生在对报价 保存时,如:保存一个3.8,但到了数据库中变成了3.80001124或3.79998999等在SqlServer的帮助中是这样描述float类型 的:用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。所以今后这个类型一定要慎用评论#1楼 218阅读全文
posted @ 2013-09-03 12:02 qanholas 阅读(91) | 评论 (0) 编辑
摘要: 今天在将txt文件导入MSSQL2005时,出了这个错误,到网上查了一下资料,说是因为没有安装SQL 2005 SP1的原因,所以我就下载了个。安装后,再次导入数据,OK 没问题了。http://www.microsoft.com/zh-cn/download/details.aspx?id=22954阅读全文
posted @ 2013-09-02 09:33 qanholas 阅读(32) | 评论 (0) 编辑
摘要: 最近,数据库系统经常出现“ 消息[298] SQLServer Error: 10054, TCP Provider: 远程主机强迫关闭了一个现有的连接。 [SQLSTATE 08S01]”一开始很迷惑,不知道原因,后来查询资料,发现 max worker thread 设置问题,由于前期 max worker thread 设置为255,连接过小,修改成0。SQL SERVER SQLOS的任务调度【介绍】SQL Server通过WORKER, SCHEDULER, TASK等来对任务进行调度和处理。了解这些概念,对于了解SQL Server内部是如何工作,是非常有帮助的。通常来讲,SCHE阅读全文
posted @ 2013-08-29 10:45 qanholas 阅读(52) | 评论 (0) 编辑
摘要: 隐式事务模式,在这种模式中,SQL Server在没有事务存在的情况下会开始一个事务,但不会像在自动模式中那样自动执行COMMIT或ROLLBACK语句。隐式事务必须显式结束(既 Commit 或者Rollback)。以下语句在没有事务时隐式开始一个事务。ALTER TABLEGRANTFETCHDELETECREATEREVOKEINSERTSELECTDROPOPENUPDATETRUNCATE TABLEØ使用隐式事务1.启动SQL Server Management Studio并打开一个“新建查询”窗口。2.键入并执行以下语句来设置连接为隐式事务模式(此例的代码包含在示例文件阅读全文
posted @ 2013-08-28 20:26 qanholas 阅读(32) | 评论 (0) 编辑
摘要: sqlserver 2008无论是什么类型的备份,完成后都将写入一个记录到errorlog中,如果长时间不清理,错误日志文件可能很大!设置关闭即可--关闭数据备份信息写入数据库日志DBCC TRACEON (3226,-1)阅读全文
posted @ 2013-08-10 09:56 qanholas 阅读(24) | 评论 (0) 编辑
摘要: 一: RAID简介 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)是一项数据保护策略. 二: RAID的几种常用级别 1. RAID 0: 通过并行读取来提高数据I/O, 读取操作效率很高, 但是不提供数据容错及保护. 不推荐作为SQL Server使用. 2. RAID 1: 镜像保护,有两个驱动器,一个做主驱动器,一个做镜像, 所以是实际需要两倍的驱动器,第二个所为冗余使用. 使用RAID 1我们的存储容量应该是(n*s/2)。 一次写操作写入到两个磁盘, 所以虽写入速度会稍微有影响, 但是读取速度几乎是大多数情况下的...阅读全文
posted @ 2013-08-05 22:03 qanholas 阅读(53) | 评论 (0) 编辑
摘要: RAID 为 Redundant Array of Indepent Disks (独立磁盘冗余阵列) 的缩写,最常用的四种RAID为 RAID 0、RAID 1、RAID 5、RAID 10,下面以图解的方式解释这四种RAID的特点和区别。在后面的图示中,用到以下标识:A,B,C,D,E和F - 表示数据块p1,p2,p3 - 表示奇偶校验信息块RAID 0RAID 0的特点:最少需要两块磁盘数据条带式分布没有冗余,性能最佳(不存储镜像、校验信息)不能应用于对数据安全性要求高的场合RAID 1以下为RAID 1的特点:最少需要2块磁盘提供数据块冗余性能好RAID 5RAID 5特点:最少3块阅读全文
posted @ 2013-08-05 21:55 qanholas 阅读(97) | 评论 (0) 编辑
摘要: 策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例、数据库以及数据库对象的各种属性。策略管理在SSMS的对象资源管理器数据库实例下的“管理”节点下,如 图:从图中可以看到,策略管理中包含三个节点:策略、条件、方面。方面就是策略要应用的对象,包括:服务器、表、触发器、视图、存储过程……这些方面对象 都是系统定义好了的,仅供瞻仰不可更改。双击具体的某一个方面可以查看该方面的属性,在定义条件时即可对这些属性进行判断,如图为存储过程方面的属性。条 件就是一个布尔表达式判断策略是否为真。策略就是在条件为假的情况下要执行的操作,即评估模式。策略中的评估模式有4种:按需、按计划、更改时记录阅读全文
posted @ 2013-08-01 13:26 qanholas 阅读(43) | 评论 (0) 编辑
摘要: 在搞清楚这个问题的过程中做了不少的实验,与各位共享。这一篇是开篇,主要说明的是 SQL Server 的四种(其实还有别的)经典的事务隔离级别,以及在不同的隔离级别下锁的使用手段,以及所带来的不同的数据一致性。SQL Server 中锁的种类(Schema操作就暂时不涉及了)锁类型描述(Shared Lock)用于只读操作数据锁定(Update Lock)用于数据的更新,在数据真正的需要更新的时候会申请升级为X锁。X(Exclusive Lock)独占锁,用于数据的更改。Key-Range Lock(稍后讨论)仅仅在 Serializable 隔离级别保护数据,以避免任何有可能使得本事务第二次阅读全文
posted @ 2013-07-31 10:37 qanholas 阅读(60) | 评论 (0) 编辑
摘要: SQL Server Service Broker服务体系结构消息类型 — 定义应用程序间交换的消息的名称。还可以选择是否验证消息。约定 — 指定给定会话中的消息方向和消息类型。队列 — 存储消息。此存储机制使服务间可以进行异步通信。Service Broker 队列还有其他优点,比如自动锁定同一个会话组中的消息。服务 — 是可寻址的会话端点。Service Broker 消息从一个服务发送到另一个服务。服务指定一个队列来保存消息,还指定一些约定,约定指明该服务可作为“目标”。约定向服务提供一组定义完善的消息类型。 处理的先决条件.USE master;GOALTER DATABASE 目标数据阅读全文
posted @ 2013-07-22 16:30 qanholas 阅读(81) | 评论 (0) 编辑
摘要: 复制存储过程执行应用于事务复制中,当在发布服务器上执行配置的存储过程时,存储过程导致的数据变更不会做为多步骤事务发送到订阅服务器,而仅仅是把执行 存储过程的命令发送到订阅服务器。 比如,如果你为一个100万条记录的表增加了一个字段,并且初始化为一个值,如果不使用复制存储过程执行的话,那么这个操作就会形成100万个更新操作发 送到订阅服务器,订阅服务器将将进行100万次更新,这个操作通常会花费很长时间,并导致后续的数据变更也无法得到及时的同步。 如果使用复制存储过程执行的话,你可以创建一个存储过程来实现这个更新,并且把这个存储过程添加到事务复制中,然后当你在发布服务器上执行完成这个存储过 程后,这个.阅读全文
posted @ 2013-07-22 16:13 qanholas 阅读(87) | 评论 (0) 编辑
摘要: 在SQL Server 2005中,通过新增的Service Broker可以实现异步触发器的处理功能。本文提供一种使用Service Broker实现的通用异步触发器方法。在本方法中,通过Service Broker构造异步触发器处理架构,对于要使用这种架构的表,只需要创建相应的触发器及处理触发器中数据的存储过程,并且在异步触发器架构中登记触发器 和处理的存储过程即可。如果一个触发器中的数据要被多个表使用,只需要在dbo.tb_async_trigger_subscribtion中登记相应 处理数据的存储过程即可,即一个表的数据变更可以被多个表订阅(使用)。架构的步骤如下:1.数据库配置需要配置阅读全文
posted @ 2013-07-22 16:08 qanholas 阅读(57) | 评论 (0) 编辑
摘要: CREATE TABLE #test(id INT IDENTITY(1,1), NAME varchar(30))INSERT #test(name)SELECT ‘41545‘SELECT * FROM #testINSERT #test(name)SELECT ‘9999999999999999999999999999999999999999999999999999999999999999999999‘SELECT * FROM #testINSERT #test(name)SELECT ‘uiii‘SELECT * FROM #test阅读全文
posted @ 2013-07-18 09:35 qanholas 阅读(53) | 评论 (0) 编辑
摘要: 困扰二天的问题终于得以解决,貌似一个棘手的问题只要知道方法也似乎变得异常简单,记录此次的解决方法,避免遗忘。无法对 数据库‘UDS‘ 执行 删除,因为它正用于复制。 (.Net SqlClient Data Provider)在网上找了些答案无非是先让数据库"UDS"脱机,然后进行分离,但还是不能解决问题。根据查看错误的详细信息,原来微软的帮助与支持 里面早就有此问题的解决方案,所以结合自己的实际情况执行下述语句,然后再进行DROP即 可.sp_removedbreplication‘UDS‘DROP DATABASEUDS-----------阅读全文
posted @ 2013-07-15 08:47 qanholas 阅读(640) | 评论 (0) 编辑
摘要: DECLARE @ip VARCHAR(60)=‘113.118.138.159‘DECLARE @ip_int BIGINT=[dbo].[f_IP2Int](@ip)SELECT[IPstart], [IPend], [M1], [M2], [M3], [M4]FROM[master].[dbo].[ipv]WHEREipstart @ip_intGOSET STATISTICS IO ON SET STATISTICS TIME ON CREATE CLUSTERED INDEX ix_action ON [ipv](ipstart,[IPend])select dbo.阅读全文
posted @ 2013-07-11 11:09 qanholas 阅读(188) | 评论 (0) 编辑
posted @ 2013-07-10 14:48 qanholas 阅读(20) | 评论 (0) 编辑
摘要: using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace SQLServerDAL //可以修改成实际项目的命名空间名称 { public abstract class DbHelperSQL { protected static string connectionString = @"Data Source=.;Initial 阅读全文
posted @ 2013-07-05 17:20 qanholas 阅读(9147) | 评论 (0) 编辑
摘要: --SELECT stuid FROM dbo.BZList WHERE AreaOrganID=-1 AND AreaPointCode=-1 AND DeptOrganID=-1SELECT bzid,stuid, BZKTypeID, BZKTypeName, BZDate, BZData, BZRemark, PointCode FROM dbo.BZList WHERE StuID =338180 ORDER BY BZDateSELECT bzid,stuid, BZKTypeID, BZKTypeName, BZDate, BZData, BZRemark, PointCode 阅读全文
posted @ 2013-07-05 15:35 qanholas 阅读(110) | 评论 (0) 编辑
摘要: 原文http://www.cnblogs.com/tc310/archive/2010/09/17/1829276.htmlCREATE TABLE #test(fphm INT ,kshm CHAR(8))INSERT #testSELECT 2014,‘00000001‘ UNION ALL SELECT 2014,‘00000002‘ UNION ALL SELECT 2014,‘00000003‘ UNION ALL SELECT 2014,‘00000004‘ UNION ALL SELECT 2014,‘000阅读全文
posted @ 2013-07-04 15:51 qanholas 阅读(69) | 评论 (0) 编辑
摘要: --创建md5函数CREATE FUNCTION [dbo].[MD5](@src varchar(255) )RETURNS varchar(255)ASBEGIN DECLARE @md5 varchar(34) SET @md5 = sys.fn_VarBinToHexStr(hashbytes(‘MD5‘, @src)); --RETURN SUBSTRING(@md5,11,16) --16位 RETURN SUBSTRING(@md5,3,32) --32位ENDGO阅读全文
posted @ 2013-07-03 15:04 qanholas 阅读(710) | 评论 (0) 编辑
摘要: SQL代理无法启动,版本2008R2,启动账户修改为新的管理员账户后启动不了,本地账户可以,处理:安全性-登录名添加该用户阅读全文
posted @ 2013-06-28 15:12 qanholas 阅读(65) | 评论 (0) 编辑
摘要: 在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充文章导读方案5使用xml参数方案6 使用表值参数TVP,DataTable传参6种实现方案总结方案5 使用xml参数对sql server xml类型参数不熟悉的童鞋需要先了解下XQuery概念,这里简单提下XQuery 是用来从 XML 文档查找和提取元素及属性的语言,简单说就是用于查询xml的语言说到这就会牵着到XPath,其实XPath是XQuery的一个子集,XQuery 1.0 和 XPath 2.阅读全文
posted @ 2013-06-28 09:11 qanholas 阅读(37) | 评论 (0) 编辑
摘要: 文章导读拼SQL实现where in查询使用CHARINDEX或like实现where in 参数化使用exec动态执行SQl实现where in 参数化为每一个参数生成一个参数实现where in 参数化使用临时表实现where in 参数化like参数化查询xml和DataTable传参身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要 提高SQL的查询性能,需要一次性where in 几百、上千、甚至上万条数据时,参数化查询将是必然进行阅读全文
posted @ 2013-06-28 09:10 qanholas 阅读(60) | 评论 (0) 编辑
摘要: 解决方法很简单:卸载删除跟IIS相关的几个漏洞安全更新补丁即可,包括KB939373、KB2290570和KB2124261。卸载微软安全更新补 丁的方法:打开控制面板的“添加删除程序”面板,勾选顶部的“显示更新”可显示系统中所有安装的补丁,找到如上所述的几个补丁,依次卸载掉即可。如果还没 解决可以把以下几个相关的补丁也卸载掉:KB970483、KB2347290 、KB975558、KB942830、KB942831、 KB2121546、KB982802、KB981322。如果不想卸载以上所有补丁,可以在添加删除Windows组件中先卸载IIS,再重新安装 IIS,注册asp.net也可。阅读全文
posted @ 2013-06-18 11:59 qanholas 阅读(2028) | 评论 (0) 编辑
摘要: --方法1.求分组数据中最小的前三条SELECT t1.*FROM dbo.info t1WHERE t1.name IN ( SELECT TOP 3 t2.name FROM info t2 WHERE t2.class = t1.class ORDER BY t2.score ASC ) ORDER BY t1.class DESC ,t1.score asc--方法2.求分组数据中最小的前三条SELECT * FROM(SELECT * , ( SELECT COUNT(1) FROM dbo.info t2 WHERE t1.score > t2.score AND t1.cl阅读全文
posted @ 2013-06-03 15:16 qanholas 阅读(44) | 评论 (0) 编辑
摘要: //1、HTML直接转文本//使用方法HtmlToText convert = new HtmlToText();textBox2.Text = convert.Convert(textBox1.Text);//代码/// <summary>/// Converts HTML to plain text./// </summary>class HtmlToText{ // Static data tables protected static Dictionary<string, string> _tags; protected static HashSet阅读全文
posted @ 2013-05-31 08:33 qanholas 阅读(74) | 评论 (0) 编辑
摘要: 一个备份集出错的恢复例子/******************************************尝试修复,出现错 误*******************************************/restoredatabaseth114_oafromdisk=‘D:\DESK\2010-02-05.bak‘withmove‘TH114_OA_Data‘to‘d:\TH114_OA_Data.MDF‘,move‘TH114_OA_Log‘to‘d:\TH114_OA_Log.ldf‘,stats/阅读全文
posted @ 2013-05-22 14:40 qanholas 阅读(1076) | 评论 (0) 编辑
摘要: 一、问题现象在执行分布式事务时,在sql server 2005下收到如下错误:消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。二、解决方案1.双方启动MSDTC服务MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务 器启动MSDTC(Distributed Transaction Coordinator)服务。2.打开双方135端口MSDTC服务依赖于RPC(Remote Proced阅读全文
posted @ 2013-05-15 16:06 qanholas 阅读(1031) | 评论 (0) 编辑
摘要: ----允许对系统表进行更新exec sp_configure ‘allow updates‘,1reconfigure with overrideGO----取消标识列标记update syscolumns set colstat = 0 where id = object_id(‘tablename‘) and colstat = 1GO--插入id=8001-8003的行...----恢复标识列标记update syscolumns set colstat = 1 where id = object_id(‘tablename‘) and 阅读全文
posted @ 2013-05-10 21:36 qanholas 阅读(55) | 评论 (0) 编辑
摘要: SQL Server 2008中的FileStream支持服务器有一个属性,即指定该服务器是怎么支持文件流的/*实际上文件流的出现就是为了解决对大对象的存储中一个矛 盾。对于大对象,第一种方式是存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做。好处是可以统一备份,但实际上 读取效率比较低。大于1MB的文件就会有问题第二种方式是文件存储在文件系统,而数据库中存储了一个路径。这种方式数据库压力减轻了,却很不方便统一备份 和管理。SQL SERVER 2008的文件流其实就是二者的统一。文件还是放在文件系统的,但由数据库进行管理。可以统一备份和还原。FILESTREA阅读全文
posted @ 2013-05-09 16:20 qanholas 阅读(73) | 评论 (0) 编辑
摘要: 经常会有需求记录用户表中由DML操作(Insert/Updae/Delete)引起的数据变化,在SQL Server 2008 以前的版本中,要实现这样的功能只能通过Trigger或者数据比对(例如SCD处理),而且必须针对每个用户表开发。SQL Server 2008中新增了两种记录数据变化的功能,本文就Change Data Capture(CDC)和Change Tracking的特性做简要对比。 Change Data Capture CDC通过对事务日志的异步读取,记录DML操作的发生时间、类型和实际影响的数据变化,然后将这些数据记录到启用CDC时自动创建的表中。通过cdc相 关的..阅读全文
posted @ 2013-04-26 11:20 qanholas 阅读(101) | 评论 (0) 编辑
摘要: 今天在将一个 SQL Server 2005 数据库附加到 SQL Server 2008 R2 时出现如下的错误:无法升级数据库 ‘SchoolPlatForm1‘,因为它是只读的,或者具有只读文件。请将数据库或文件设为可写,然后重新运行恢复操作。 (Microsoft SQL Server,错误: 3415)查看了数据库文件,他们并没有只读属性,在 SQL Server 2005 中附加都是一切正常的啊。从网上找了几种方式:1.将要附加的文件拷贝到 SQL Server 默认的 Data 目录,此时附加就会成功;(我用之种方式就可能正常附加数据.下面的几种方式没有尝试).(阅读全文
posted @ 2013-04-26 09:25 qanholas 阅读(56) | 评论 (0) 编辑
摘要: SQL2005系统服务启动不了,具体出错信息:TITLE: 连接到服务器------------------------------无法连接到 SHARESUN/SQL2005。------------------------------ADDITIONAL INFORMATION:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) (Microsoft SQL Server, Error: -1) 阅读全文
posted @ 2013-04-26 09:22 qanholas 阅读(4164) | 评论 (0) 编辑
摘要: 权限不要叠加阅读全文
posted @ 2013-04-24 11:42 qanholas 阅读(35) | 评论 (0) 编辑
摘要: 在SQL Server 2005数据库中,通过新增的Service Broker可以实现异步触发器的处理功能。本文提供一种使用Service Broker实现的通用异步触发器方法。 在本这个方法中,通过Service Broker构造异步触发器处理架构,对于要使用这种架构的表,只需要创建相应的触发器及处理触发器中数据的存储过程,并且在异步触发器架构中登记触发器 和处理的存储过程即可。如果一个触发器中的数据要被多个表使用,只需要在dbo.tb_async_trigger_subscribtion中登记相应 处理数据的存储过程即可,即一个表的数据变更可以被多个表订阅(使用)。 架构的步骤如下: 1..阅读全文
posted @ 2013-04-23 08:49 qanholas 阅读(77) | 评论 (0) 编辑
摘要: 最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大家回复,我视情况修改原帖,谢谢。背景:在 SQLServer2008之前,对数据变更的捕获通常使用触发器、时间戳等低效高成本的功能来实现,所以很多系统都没有做数据变更或者仅仅对核心表做监 控。自从SQLServer2008引入了数据变更捕获功能(后面简称为CDC)后,解决了很多烦恼问题,如客户2个月前更改了一个数据,但是由于服务器 空间不足,经常只能保留一个月的备份。此时客户为了逃避因为更改数据带来的较大负面影响,往往会把责任推给软件开发商或者运维商,如果此时有变更捕获阅读全文
posted @ 2013-04-18 15:47 qanholas 阅读(332) | 评论 (0) 编辑
摘要: /********运行Sql Server Profiler所需的权限(performance)*********/--EG.-- 使用TRACE帐户(Performancetest)跟踪Sql Server事件.-- 创建TRACE登陆帐户(Performancetest),并授予其 ALTER TRACE和VIEW SERVER STATE的权限.USE MasterCREATE LOGIN Performancetest WITH PASSWORD=‘abc@1234‘; GO GRANT ALTER TRACE TO Performancetest; GRANT VIE阅读全文
posted @ 2013-04-17 09:27 qanholas 阅读(90) | 评论 (0) 编辑
摘要: 操作步骤;1、检查tempdb的逻辑名字和它的存在位置。可以使用下面语 句:SELECTname,physical_nameFROMsys.master_filesWHEREdatabase_id=DB_ID(‘tempdb‘); 2、暂停数据库服务.3、拷贝原来tempdb的文件到新的位置(原来文件位置可以通过上述查询得到)。3、拷贝完毕后,启动数据库服务。4、执行如下命 令:USEmaster;GOALTERDATABASEtempdbMODIFYFILE(NAME=tempdev,FILENAME=‘E:\tempdb \tempdb.mdf‘);GOALTERD阅读全文
posted @ 2013-04-11 11:29 qanholas 阅读(34) | 评论 (0) 编辑
摘要: 企业级的数据库应用大多部署在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 阅读(150) | 评论 (2) 编辑
摘要: 简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变得十分重要了。本文从旨在从性能的角度来谈聚 集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。聚集索引所在的列或列的组合最好是唯一的 这个原因需要从数据的存放原理来谈。在SQL Server中,数据的存放方式并不是以行(Row)为单位,而是以页为单位。因此,在查找数据时,SQL Server查找的最小单位实际上是页。也就是说即使你只查找一行很小的数据,SQL Server也阅读全文
posted @ 2013-03-26 10:25 qanholas 阅读(73) | 评论 (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 阅读(40) | 评论 (0) 编辑
摘要: 有关T-SQL的10个好习惯1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的 书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。 而额外的IO这点显而易见,当查找不需要的列时自然会产生不必要的IO,下面我们通过一个非常简单的例子来比较这两种差别,如图1所示。图1.*带...阅读全文
posted @ 2013-03-26 10:19 qanholas 阅读(172) | 评论 (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 阅读(20) | 评论 (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 阅读(124) | 评论 (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 阅读(28) | 评论 (0) 编辑
摘要: SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。在选择数据库同 步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制。数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像服务器。但缺点是配置复杂,镜像数据库中的数据不可见(在SQL Server Management St阅读全文
posted @ 2013-03-13 11:32 qanholas 阅读(109) | 评论 (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 阅读(896) | 评论 (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 阅读(1283) | 评论 (0) 编辑
摘要: sp_removedbreplication ‘数据库名称‘阅读全文
posted @ 2013-03-11 08:50 qanholas 阅读(34) | 评论 (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 阅读(69) | 评论 (0) 编辑
摘要: 随着大数据时代的到来,日益增长的数据给数据库带来了越来越大的压力。据统计现在我们每天大概将会产生2.5 quintillion bytes的数据,大数据时代的数据查询效率引起了越来越多的关注。SQL Server 2012新增加了列存储索引,微软称这是其独有的特性,可以为数据仓库查询建立只读索引,数据被组织成扁平化的压缩形式存储,可以减少 I/O 和内存使用。 下面我们具体研究一下这个列存储索引是不是真的如宣传的那样:比利用常规索引来查询快几百倍。 关于列存储绝对不是一个新名词了,大概可以追溯到上个世纪八十年代,本文主要是来研究SQL Server 2012的列存储索引(Columnsto..阅读全文
posted @ 2013-03-08 08:51 qanholas 阅读(1531) | 评论 (1) 编辑
摘要: SQL2008 在索引類型中新增了一個名為篩選索引的新成員,線上叢書說明篩選索引是最佳化的非叢集索引,特別適合從已定義的資料子集進行查詢篩選。簡單來說就是在建立 非叢集索引時可加上簡單的 WHERE 子句來提高選擇性,竟而提升查詢效能、降低索引儲存和維護成本..等,不多說,馬上來實測看看效果如何。參考線上叢書情境如下:當資料行中的值大部分都是 NULL 且查詢只會從非 NULL 值進行選取時(疏鬆資料行),您可以針對非 NULL 的資料列建立篩選索引。所產生的索引比在相同的索引鍵資料行上定義的全資料表非叢集索引還小,維護成本也比較低。CANCEL_REASON資料行資料內 容如下:is null筆阅读全文
posted @ 2013-03-05 11:09 qanholas 阅读(144) | 评论 (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 阅读(89) | 评论 (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 阅读(68) | 评论 (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 阅读(416) | 评论 (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 阅读(61) | 评论 (0) 编辑
摘要: 在我们编写程序的时候,有时候要进行复杂的查询时,就会出现执行sql时间过长,引起页面执行不了并提示执行脚本超时,这就是我们遇到超时异常。超时异常 分两种情况:一种,是连接超时;一种,是执行超时。前者,通过SqlConnection.ConnectionTimeOut进行设置。后者,通过 SqlCommand.CommandTimeOut进行设置。SqlConnection.ConnectionTimeout获取在尝试建立连接时终 止尝试并生成错误之前所等待的时间。等待连接打开的时间(以秒为单位)。默认值为 15 秒。SqlCommand.CommandTimeout获取或设置在终止执行命令的尝试并生阅读全文
posted @ 2013-02-26 15:17 qanholas 阅读(1847) | 评论 (0) 编辑
摘要: 在进行数据持久化的时候,我们会经常用到事务处理。一般情况下,ADO.NET中的事务处理就能够满足我们的需要,但是,ADO.NET中的事务不能同事 对多个数据库连接进行原子性的操作;如果在你的业务环境中存在多个数据库、文件写入等操作,同时需要保证数据完整性和一致性的时候,你可以考虑使 用.NET提供的分布式事务处理。 使用分布式事务处理,需要Windows系统的支持,所以,我们需要将系统的MSDTC服务开启。步骤:管理工具>组件服务;依次展开 控制台根节点>组件服务>计算机>我的电脑;在“我的电脑”节点上右键打开“属性”;在选项卡中勾选“使用本地协调器”,然后点击“确 定”按钮阅读全文
posted @ 2013-02-03 13:44 qanholas 阅读(94) | 评论 (0) 编辑
摘要: 首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~ 很多朋友认为数据库在简单模式下,堆表误删除一条记录,是无法找回的,因为没有日志记录。其实不然,某种意义上是可以找回的,因为堆表在删除记录时,没有 回收空页面的前提下,只更改了行偏移,实际数据没有被物理删除,所以利用这点,测试了下恢复数据,果然成功了,但是还有点问题没有研究出结果:如果不关闭 页面校验,除了更改偏移量,删除数据时还需要更改页眉,这点还没时间去琢磨,所以恢复数据时还要能推断出页眉的16进制对应关系,有兴趣的朋友可以分享下 经验给我。这里为了排除页眉的校验错误,关闭后测试..阅读全文
posted @ 2013-02-01 17:23 qanholas 阅读(52) | 评论 (0) 编辑
摘要: SQL Server Insert 操作效率(堆表 VS 聚集索引表) “SQL Server的Insert操作在堆表或者聚集索引表的时候,哪个效率更高?为什么高?” 之前有同事问过我这个问题,为了确保日志库的记录效率,于是我做了简单测试了,首先要先强调几点概念: 堆表:没有聚集索引的表,记录通过IAM页以及PFS页来确定哪页有空闲空间。 聚集索引表:有聚集索引的表,记录是根据聚集键值所在页的键值逻辑顺序维护的Demo:如下 分别对堆表和聚集表进行5个并发线程,每个线程各10000次循环插入 1. 堆表测试--1. 创建一张堆表create table Insert_Test...阅读全文
posted @ 2013-02-01 17:05 qanholas 阅读(86) | 评论 (0) 编辑
摘要: 原因及解决方案:此为文件写入权限问题,可如下操作解决(XP系统IIS5下尝试可行)1、资源管理器->工具->文件夹选项->查看 不选"使用简单文件共享"2、右击该xml文件(或者该文件所在文件夹),选"属性"点"安全"添加"aspnet",选中“写入”赋予写入权限,或者 选"完全控制",然后确定即可。以下为网络获取在windows2003服务器IIS6下出现该错误提示的参考解决方案,在此摘录仅供备份参考:解决方案 一在需要进行读写操作的目录下添加Network Service这个帐阅读全文
posted @ 2013-01-12 12:08 qanholas 阅读(1915) | 评论 (1) 编辑
摘要: 之前写过一篇关于SQL Server 访问MySQL 数据库的文章,最近正好又遇到需要访问Oracle 的情况,将配置过程记录下来也供大家参考。准备工作事先在需要访问Oracle 数据库的主机上完成以下工作:1. 安装SQL Server 数据库:SQL Server 2008 R2 Express2. 安装Oracle 客户端访问程序:Oracle 10g Client3. 配置Oracle 客户端tnsnames.ora 文件,其中需要注意文件中的数据库别名“ORADB”,该名称在下文创建Linked Server 时将会使用到。ORADB = (DESCRIPTION = (A...阅读全文
posted @ 2013-01-10 14:52 qanholas 阅读(51) | 评论 (0) 编辑
摘要: ALTER FUNCTION [dbo].[fn_subordinates1](@root AS INT) RETURNS @Subs TABLE( empid INT NOT NULL PRIMARY KEY NONCLUSTERED, lvl INT NOT NULL, UNIQUE CLUSTERED(lvl, empid) )ASbegin declare @lv int set @lv=0insert @Subs values(@root,@lv)while @@rowcount>0begin set @lv=@Lv+1; insert @subs select b.empid阅读全文
posted @ 2013-01-10 12:57 qanholas 阅读(32) | 评论 (0) 编辑
摘要: DECLARE @login nvarchar(30)-- 查詢設定密碼逾期的登入帳號SELECT @login = name FROM sys.sql_loginsWHERE (type = ‘s‘) AND (is_expiration_checked = 1)-- 計算登入帳號密碼已使用天數SELECT @login AS ‘login‘, DATEDIFF(d, CAST(LOGINPROPERTY(@login, ‘PasswordLastSetTime‘) AS datetime), GETDATE()) AS ‘pwd_us阅读全文
posted @ 2013-01-05 11:00 qanholas 阅读(49) | 评论 (0) 编辑
摘要: 虚拟机共享磁盘,VMware稍显复杂,没想到,VirtualBox却如此简单,下面是详细的步骤 一:添加磁盘二:选择创建一个新的磁盘三:选择VDI类型四:固定大小(此处必须要选此项)五:指定磁盘大小及存放位置,下一步六:创建七:已创建、加载 完毕,确定八:点击“管理”菜单,选择“虚拟介质管理”九:选中刚刚创建的磁盘,点击Modify(或右键选择Modify)十:选择“共享”,确定十 一:关闭管理窗口十二:选择另一台虚拟机,点击“设置”十三:选择“存储”-“控制器”-“增加磁盘”十四:选择已存在的磁盘,点击后,找到刚刚创建好的 磁盘,确定十五:磁盘已加载至此,本块磁盘已共享至两台虚拟机服务器另:Vir阅读全文
posted @ 2012-12-17 15:56 qanholas 阅读(1148) | 评论 (0) 编辑
摘要: 今天维护计划任务时,经常出现,c001f011错误,到网上找了一些解决方案,如下:创建维护计划失败。其他信息:从 ICLassFactory 为CLSID为{17BCA6E8-A95D-497E-B2F9-AF6AA475916F}的COM组件创建实例失败,原因是出现以后错 误:c001f011.(Microsoft.SqlServer.ManagedDTS)从ICassFactory为CLSID为 {17BCA6E8-A950-497E-B2F9-AF6AA475916F}的COM组件创建实例失败,原因是出现以下错误:c001f011. (Microsoft.Server.manageDTS)解决阅读全文
posted @ 2012-12-12 10:10 qanholas 阅读(2555) | 评论 (1) 编辑
摘要: 问题:开启SQLServer2008之后,本地管理员组不再需要手动添加,因为在安装的时候已经默认添加。你甚至只需要把当前用户手动添加到本地管理员 用户即可。这意味着,特别是如果你不使用混合认证模式(或者忘记了sa密码),你可能会被拒绝登录自己的SQLServer实例。我遇到过一个情景,一个 职员离开,但是他的windows账号,只拥有SQLServer管理员权限,会完全阻塞系统。当然也只有这个人知道sa密码。作为本地管理员甚至域管理 员将对你没有帮助。典型的解决方案是以单用户模式重启SQLServer。但是,这将要求一定时间的停机。对于某些系统,这是不可接受的。并且依靠管理服 务器的需要,可能没有切实阅读全文
posted @ 2012-12-05 11:04 qanholas 阅读(663) | 评论 (0) 编辑
摘要: 问题: 我在我的应用程序中使用简单的查询/存储过程访问一个很大的表。但执行了很长时间。在where子句中,我使用了有索引并且高选择性 (selective)并且没有用函数包裹的字段。但是看起来就像没有使用索引一样,问题出在那里?解决方案: 出现这种微秒的问题原因可能是作为参数的数据类型与查询中的数据类型不一致。在这种情况下,SQLServer将会要么把where中的列,要么把参数的 数据类型隐式转换为更高级或者更低级的数据类型。当作为被查询列被转换时(转换竞争中的牺牲者),将引起扫描(scan)来满足查询请求。让我们看看以下 两个例子,第一个例子使用示例数据库AdventureWorks,我们将通过阅读全文
posted @ 2012-12-05 10:50 qanholas 阅读(260) | 评论 (0) 编辑
摘要: 问题:在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败,反之亦然.分析:这种情况多数为执行时上下文(Context)安全性问题。在SSMS中执行的 时候,T-SQL语句是在当前登录名下运行的。但是作业在SQL Server Agent中是以SQL Server Agent 服务(SQL Server Agent Service account)运行的,如果SQL Server Agent的账号与在SSMS中执行T-SQL的账号不一样或者权限不同的话,作业就会失败。本人的实践是使用高权限的账号来运行SQL Server Agent,并且具有独立账号阅读全文
posted @ 2012-12-05 10:48 qanholas 阅读(64) | 评论 (0) 编辑
摘要: 参照完整性在设计数据库时需要重视,在我作为DBA的生涯中,看到很多设计走了极端的路子。在进入DELETE CASCADE选项的详细说明前,先来看看另外一个选项,可以在具有外键的表中设置UDPATE CASCADE选项。在我的工作生涯中,我从来没有遇到过必须通过外键来更新一列或多列。创建实例表:在本例中,创建两个表,并用外键关联起来。主表有 99999行记录,子表对于每条父记录,有19条记录。下面是创建语句:-- Table creation logic--parent tableCREATE TABLE [dbo].[Order]([OrderID] [bigint] NOT NULL,[Ord阅读全文
posted @ 2012-12-05 10:38 qanholas 阅读(47) | 评论 (0) 编辑
摘要: 使用情景:有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的。但是有时候却是因为一些触发器被禁用了。 由于SQLServer默认不跟踪触发器的启用还是禁用。且禁用触发器的命令(Disable Trigger)不在默认跟踪里面捕获。但是可以在服务器级别的跟踪(不是使用Profiler)获取这些信息,捕获SQL:StmtCompleted 并在TextData列筛选,但是对于负载较重的系统,这样会有比较大的影响。 如果你的是企业版,可以考虑使用一个新特性:SQL Server Audit。可以使用DATABASE AUDIT SPECIFICATION来捕获这些事件。使用步阅读全文
posted @ 2012-12-05 10:34 qanholas 阅读(115) | 评论 (0) 编辑
摘要: -----------------------------------------------------------------------创 建主密钥use masterCreate MASTER KEY ENCRYPTIONBY PASSWORD = ‘zhouwei123!‘GO--创建证书,用于透明数据加密CREATE CERTIFICATE TDE_Server_CertificateWITH SUBJECT = ‘Server-level cert for TDE‘GO--第一步:现在开始透明加密USE cteGOCREATE DATABASE EN阅读全文
posted @ 2012-11-29 13:03 qanholas 阅读(78) | 评论 (0) 编辑
摘要: 异构数据库中对应的同一对象的数据类型与定义的长度是否一致,如果是基本的结构不一致的话,请先调整一致,再试;反之若是其它数据库对象的话:我建议你刷 新一下数据库对象: 使用如下的脚本,EXEC SP_REFRESHVIEW ‘对象名‘这样问题就可以解决EXECUTE sp_refreshview N‘dbo.v_Employee_Company‘;阅读全文
posted @ 2012-11-02 16:31 qanholas 阅读(3073) | 评论 (0) 编辑
摘要: --drop table test CREATE TABLE test ( name VARCHAR(12), scores INT ) INSERT INTO test SELECT ‘周杰伦‘,230 UNION SELECT ‘周星驰‘,100 UNION SELECT ‘成龙‘,150 UNION SELECT ‘李连杰‘,200 UNION SELECT ‘莉莉‘,260 SELECT * FROM test /* name scores 成龙 150 莉莉 260 李连杰 200 周杰伦 230 周星驰阅读全文
posted @ 2012-11-01 10:26 qanholas 阅读(74) | 评论 (0) 编辑
摘要: CREATE TABLE #files ( id INT IDENTITY(1, 1) , name VARCHAR(500) )DECLARE @dir VARCHAR(600)= ‘E:\DataBaseBackup\‘DECLARE @dir1 VARCHAR(600)= ‘dir ‘ + @dirDECLARE @day INT= 8 --大于等于8天的备份INSERT #files ( name ) EXEC xp_cmdshell @dir1;WITH cte AS ( SELECT name = @di...阅读全文
posted @ 2012-10-31 11:38 qanholas 阅读(134) | 评论 (0) 编辑
摘要: 修改SQL server 2008服务器排序规则 SQL Server 2008安装好后,发现服务器排序规则不对,又不想重装SQL Server。 假设当前默认实例的服务器排序规则是:Chinese_PRC_CI_AS,要修改成SQL_Latin1_General_CP1_CI_AS 步骤: 在CMD模式 1、 进入SQL Server 安装文件所在目录(setup.exe文件所在目录) 2、 运行命令:Net stop mssqlserver 3、 Setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver...阅读全文
posted @ 2012-10-24 10:15 qanholas 阅读(9653) | 评论 (3) 编辑
摘要: --重建之前--记录配置信息 --SELECT * FROM sys.configurations;--确认还原后的系统数据库文件位置. --SELECT name, physical_name AS current_file_location --FROM sys.master_files --WHERE database_id IN (DB_ID(‘master‘), DB_ID(‘model‘), DB_ID(‘msdb‘), DB_ID(‘tempdb‘)); --确认版本信息 --SELECT --SERVERPROPE阅读全文
posted @ 2012-10-24 10:09 qanholas 阅读(1598) | 评论 (0) 编辑
摘要: 在用SQL Server 2005进行一项测试:如何一次删除所有用户数据库时,没注意到当前数据库是master,结果,把这里的一些表都给删除了,从而,数据库引擎可以正常使 用,但如果右击任一数据库,都会出现查找master里的一个表的操作(对象名 master.dbo.spt_values‘ 无效。 (Microsoft SQL Server,错误: 208)),而这个表被我删除了,所以就运行不成功了,想压缩数据库还行用SQL语句,很麻烦。在网上找的大都是SQL Server 2000 master数据库重建帖子,关于SQL Server 2005 重建master的帖子基本上都是只有提阅读全文
posted @ 2012-10-24 09:55 qanholas 阅读(1099) | 评论 (0) 编辑
摘要: WITH cte AS ( SELECT --ROW_NUMBER() OVER ( PARTITION BY StuID ORDER BY BZList.BZInputTime ) pid, BZDate, BZInputTime, StuName, STUID, BZKTypeName, BZData FROM BZList WHERE StuID = 26768 AND ( ( BZKTypeName = ‘桩考‘ AND BZInfro = ‘不及‘ ) OR ( BZKTypeName = ‘补考名单‘ AND BZData = 阅读全文
posted @ 2012-10-19 17:13 qanholas 阅读(64) | 评论 (0) 编辑
摘要: USE [SGPZ]GOCREATE TYPE RC AS TABLE(R1 [varchar](MAX) ,R2 [varchar](MAX) )ALTER FUNCTION fn_rc ( @rc rc READONLY )RETURNS @re TABLE ( R1 [varchar](MAX) , R2 [varchar](MAX) )AS BEGIN INSERT @re SELECT R1, R2 = STUFF(( SELECT ‘,‘ + R2 FROM @rc t WHERE R1 = NT.R1 FOR XML PATH(‘‘) ), 1, 阅读全文
posted @ 2012-10-19 15:02 qanholas 阅读(94) | 评论 (0) 编辑
摘要: 使用以下带有连接服务器的语句更新数据速度非常慢,使用profiler监控到了居然会把这个语句当作游标逐行扫描目标表来做,执行效率非常差,有高手有 解决方案吗? update [172.16.7.129].productDB.dbo.tblStyleset ChineseName=ChineseName+‘D‘ where StyleId=N‘0091002‘;改成这样exec [172.16.7.129].productDB..sp_executesql N‘update update dbo.tblStyleset ChineseName=Chinese阅读全文
posted @ 2012-09-25 16:41 qanholas 阅读(127) | 评论 (0) 编辑
摘要: SET XACT_ABORT onbegin transaction testselect 1/0goselect 1commit transaction testgoSET XACT_ABORT offbegin transaction testselect 1/0select 1commit transaction testSET XACT_ABORT onbegin transaction testselect 1/0goselect 1commit transaction testgo阅读全文
posted @ 2012-09-17 14:27 qanholas 阅读(69) | 评论 (0) 编辑
摘要: 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚 合一个范围内的值等。下表给出了T-SQL函数的类别和描述。函数类别作用聚合函数执行的操作是将多个值合并为一个值。例如 COUNT、SUM、MIN 和 MAX。配置函数是一种标量函数,可返回有关配置设置的信息。转换函数将值从一种数据类型转换为另一种。加密函数支持加密、解密、数字签名和数字签名验 证。游标函数返回有关游标状态的信息。日期和时间函数可以更改日期和时间的值。数学函数执行三角、几何和其他数字运算。元数据函数返回数据库和数据库对象 的属性信息。排名函数阅读全文
posted @ 2012-09-12 14:30 qanholas 阅读(1583) | 评论 (0) 编辑
摘要: SELECT PATINDEX(‘%[A-Za-z0-9][^A-Za-z0-9\-]%‘, ‘5448-cctv美国‘)阅读全文
posted @ 2012-09-12 12:59 qanholas 阅读(44) | 评论 (0) 编辑
摘要: 概述写下本篇文章源于参加Tech.Ed的一场关于Window PowerShell的课程。虽然之前也经常关注,但从没有亲自体验过。Windows PowerShell 是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化任务,它建立在 .NET Framework 的基础上,可使 IT 专业人员和开发人员控制和自动完成Windows 和应用程序的管理。更为强大之处在于它可以调用.NET Framework中的类库,可以与COM、ADO、XML等交互。在本文中让我们一起来体会一下回归Doc操作的快感,进入强大无比的Windows PowerShell世界。在Windows PowerShel阅读全文
posted @ 2012-09-11 17:09 qanholas 阅读(64) | 评论 (0) 编辑
摘要: SELECT s1.name,command,textFROM ( SELECT name, LTRIM(REPLACE(command, ‘exec ‘, ‘‘)) command FROM [msdb].[dbo].[sysjobs] jobs RIGHT JOIN [msdb].[dbo].[sysjobsteps] steps ON jobs.job_id = steps.job_id WHERE LEFT(LTRIM(command), 4) = ‘exec‘ AND jobs.name IS NOT NULL ) s1 JOIN ( 阅读全文
posted @ 2012-09-11 10:12 qanholas 阅读(41) | 评论 (0) 编辑
摘要: SELECT RTRIM(LTRIM(WorkName)) WorkName, t.BZKTypeName, t.TestProject, t.Factor, BJ, BLFROM #tbl tORDER BY WorkName, t.BZKTypeName DESC, t.TestProject DESC, t.factor DESC SELECT *FROM dbo.ScoreCodeWHERE IsDelete = 0SELECT RTRIM(LTRIM(WorkName)) WorkName, t.BZKTypeName, t.TestProject, t.Factor, BJ, BL阅读全文
posted @ 2012-09-10 15:04 qanholas 阅读(33) | 评论 (0) 编辑
摘要: 安装SQL Server 2008的时候没有输入序列号,后来才发现是Express版的,今天到期了,升级SQL后,SQL服务可以用了,但SQL Server Management Studio缺无法使用。在网上找了许久找到了一个解决方法:1.修改注册表(Regedit): 路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ConfigurationState下的CommonFiles文件,将值从1改为3。2.升级SQL记得别再忘记输入序列号了 哦,升级完成后,SQL Server Management St阅读全文
posted @ 2012-09-03 09:16 qanholas 阅读(42) | 评论 (0) 编辑
摘要: 转自 [url]http://www.cnblogs.com/szflying/archive/2009/02/02/1382299.html[/url]错误截图:修改配置截图:更多4阅读全文
posted @ 2012-09-02 12:20 qanholas 阅读(29) | 评论 (0) 编辑
摘要: 今天有个朋友很着急地打电话给我,他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录,而这个数据库之前没有任何备份。让我帮他解决一下,不然他要赔偿客户很多钱。SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:1. 至少有一个误删除之前的数据库完全备份。2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。针对这两个前提条件,会有三种情况:情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文 章),无需借助第三方工具。 a) 备份当前数据库的事务日志:BACKUP .阅读全文
posted @ 2012-08-28 09:03 qanholas 阅读(93) | 评论 (0) 编辑
摘要: SQL2000企业版本适用于WIN2000 Server系统和Windows 2003系统,Windows XP一般装不了需要选用个人版或开发板。但是企业版也可以安装在xp系统下。这里介绍一个XP下安装装SQL2000企业版本方法,以供参考:一.在 SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程简单直接下一步就OK了。 二.重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。 三.再拿出SQL服务器版的安装光盘,(本地磁盘安装运行autorun.exe就行了)根据提示安装,这里直接安装客户端工具。 四.打开企业管理器,试用sa用户连一下,是不是用阅读全文
posted @ 2012-08-27 17:32 qanholas 阅读(47) | 评论 (0) 编辑
摘要: 策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例、数据库以及数据库对象的各种属性。策略管理在SSMS的对象资源管理器数据库实例下的“管理”节点下,如 图: 从图中可以看到,策略管理中包含三个节点:策略、条件、方面。 方面就是策略要应用的对象,包括:服务器、表、触发器、视图、存储过程……这些方面对象都是系统定义好了的,仅供瞻仰不可更改。双击具体的某一个方面可以 查看该方面的属性,在定义条件时即可对这些属性进行判断,如图为存储过程方面的属性。 条件就是一个布尔表达式判断策略是否为真。 策略就是在条件为假的情况下要执行的操作,即评估模式。策略中的评估模式有4种:...阅读全文
posted @ 2012-08-08 11:19 qanholas 阅读(54) | 评论 (0) 编辑
摘要: 遇到了一个问题,从excel导入数据到sql2005,之前操作过很多次,这次遇到了一些新情况。 使用的语句如下: select * from OpenRowSet (‘Microsoft.Jet.OLEDB.4.0‘, ‘Excel 8.0;HDR=Yes;IMEX=1;Database=E:\bb.xls‘, [Sheet1$] )结果提示错误:因为 OLE DB 访问接口 ‘Microsoft.Jet.OLEDB.4.0‘ 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。 查了很多资料一般都是客户端和服务器端都是64位系统的情阅读全文
posted @ 2012-07-21 09:34 qanholas 阅读(1251) | 评论 (0) 编辑
摘要: DECLARE @a VARCHAR(30)= ‘cc‘DECLARE @b VARCHAR(30)= ‘cc ‘IF ( @a = @b ) PRINT 1ELSE PRINT 2if(@a+‘a‘=@b+‘a‘)PRINT 1ELSE PRINT 2阅读全文
posted @ 2012-07-20 16:02 qanholas 阅读(89) | 评论 (0) 编辑
摘要: 内嵌用户定义函数 内嵌用户定义函数是返回 table 的用户定义函数的子集。内嵌函数可用于实现参数化视图的功能。 请看下面的视图: CREATE VIEW vw_CustomerNamesInWA AS SELECT CustomerID, CompanyName FROM Northwind.dbo.Customers WHERE Region = ‘WA‘ 可创建更通用的版本 vw_CustomerNamesInRegion,方法是将 WHERE Region = ‘WA‘ 替换为 WHERE Region = @RegionParameter 并让用户指定阅读全文
posted @ 2012-07-19 16:52 qanholas 阅读(6836) | 评论 (0) 编辑
摘要: SET NOCOUNT ON SET STATISTICS IO ON SET STATISTICS TIME ON SELECT * FROM OPENQUERY(LINK_SCT, ‘SELECT * from sct.dbo.GetSubClassNew(638)‘) SELECT * FROM sct.dbo.GetSubClassNew(638) SELECT * FROM dbo.GetSubClassNew(638)阅读全文
posted @ 2012-07-16 15:41 qanholas 阅读(1591) | 评论 (0) 编辑
摘要: 昨天在测试一段批量插入记录的数据库操作时,发现开启事务与否对性能影响很大,根据当时的环境,测试有6倍差距.分别测试插入500条/5000条 /50000条,开启事务时分别为480毫秒/4546毫秒/47407毫秒不开事务时分别为3100毫秒/30859毫秒/308802毫秒这是什么原 因呢?仔细分析一下,这个应该跟SqlServer的后台内存管理和数据存取机制相关。当我们提交数据到服务器时,SqlServer会按如下顺序进行操 作:1)复制数据到内存;2)书写操作日志;3)保存数据到磁盘数据文件中。这三步操作中,1和2的效率都比较高(内存书写自不必说,日志书写是顺序书 写,不需要复杂校验,故也比较快)阅读全文
posted @ 2012-07-11 09:23 qanholas 阅读(1377) | 评论 (1) 编辑
摘要: 有时我们需要在SQL Server中清除已经连接过的服务器名称(Server Name)列表,后来网络搜索,找到了解决方法: 删除下面的文件:C:\Documents and Settings\XXX\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin注意:删除前请做备份! 如果Windows Server 2008 标准版安装SQL Express 2008,则在这里删除:X:\Users[SomeUser]\AppData\Roaming\Microsoft\Microsoft SQL.阅读全文
posted @ 2012-07-10 15:12 qanholas 阅读(995) | 评论 (0) 编辑
摘要: 数据量2000,其中有1000重复 --------------------------------------------------------------------------------------- 方法一,IN方式,适合2000/2005/2008,6728毫秒 DELETE[student_L]WHEREidNOTIN(SELECTMAX(id)-- min(id)FROM[student_L]GROUPBY[stuid],[stuname],[Birthday], [AreaOrganID])/*SQLServer分析和编译时间:CPU时间=20毫秒,占用时间=20毫秒。表‘s阅读全文
posted @ 2012-07-03 15:45 qanholas 阅读(282) | 评论 (0) 编辑
摘要: 15秒跟2秒之间的区别 UPDATE a SET flag = 1 FROM LINK_39.test_01.dbo.NSB_test AS a WHERE bh IN ( SELECT TOP 500 bh FROM LINK_39.test_01.dbo.NSB_test WHERE bh IS NOT NULL ORDER BY bh )DECLARE @bh VARCHAR(MAX)= ‘‘ SELECT @bh = @bh + ‘,‘ + CAST(CAST(bh AS INT) AS VARCHAR(10)) FROM ( SELECT TOP 50阅读全文
posted @ 2012-06-28 17:27 qanholas 阅读(553) | 评论 (0) 编辑
摘要: 问题描述:有表tb, 如下:id values----------- -----------1 aa,bb2 aaa,bbb,ccc欲按,分拆values列, 分拆后结果如下:id value----------- --------1 aa1 bb2 aaa2 bbb2 ccc1. 旧的解决方法SELECT TOP 8000 id = IDENTITY(int, 1, 1)INTO #FROM syscolumns a, syscolumns bSELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(‘,‘, A.[values] 阅读全文
posted @ 2012-06-20 16:18 qanholas 阅读(47) | 评论 (0) 编辑
摘要: 这些天看了一篇微软官方发布的MS SQL Server2008性能问题处理及优化的英文文档,里面知识点介绍地很详细,在现实工作中也很实用,遂产生了想把它翻译一下的念头。翻译的过程,既可以 帮助自己复习一下这些技术,也可以向其他还不熟悉这一块的朋友介绍一些新的知识,何乐而不为呢。只是这篇文章有点长,我会分成几篇随笔去介绍,所以,不光 是对我耐性的考验,也是对你的考验哦!-------------------------------------------- tempdb全局存储内部对象,用户对象,临时表,临时对象,以及SQL Server操作创建的存储过程。每个数据库实例只有一个tempdb,所以.阅读全文
posted @ 2012-06-14 22:14 qanholas 阅读(313) | 评论 (0) 编辑
摘要: 关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑。虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的。在本 篇文章中,我们将探索表变量和临时表是什么(以及不是什么),然后我们通过使用临时表和表变量对其解密。表变量 表变量在SQL Server 2000中首次被引入,那么,什么是表变量呢?微软在BOL (Declare @local_variable)中定义其为一个类型为表的变量。它的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束包括主键约 束,唯一约束,Null约束和Check约束(外键约束不能在表变量中使用).定义表变量的语句是和正常.阅读全文
posted @ 2012-06-14 22:06 qanholas 阅读(281) | 评论 (2) 编辑
摘要: 链接服务器下查询出现这个问题阅读全文
posted @ 2012-06-13 10:40 qanholas 阅读(48) | 评论 (0) 编辑
摘要: --创建测试表CREATE TABLE test1(id int)delete会话一BEGIN TRANdelete test1INSERT test1SELECT 1会话二INSERT test1SELECT 1一先,二后,二瞬间完成,没有发生阻塞 ---------------------------------------------------------------------sp_lock------------------------------------------------------------------------------------------------tru阅读全文
posted @ 2012-06-09 10:21 qanholas 阅读(91) | 评论 (0) 编辑
摘要: USE tempdbGOSET STATISTICS TIME OFF SET STATISTICS io OFF drop table #resultcreate table #result([插入行数] int,[正常临时表] int,[新加GUID列的临时表] int,[新加自增列临时表] int,列集 int,[into方式创建临时表] int)set nocount on declare @i int = 0while @i<=30 begin begin try drop table #Studentid drop table #Studentid1 drop table #阅读全文
posted @ 2012-06-04 10:08 qanholas 阅读(56) | 评论 (0) 编辑
摘要: USE tempdbGOSET STATISTICS TIME OFF SET STATISTICS io OFF drop table #resultcreate table #result( [插入行数] int , [正常临时表] int, [行压缩临时表] int, [into方式创建临时表] int, [新加GUID列的临时表] int, [页压缩临时表] int, [行压缩临时表+新加GUID列] int, [页压缩临时表+新加GUID列] int, [新加自增列临时表] int) set nocount on declare @i int =0while @i<=5000b阅读全文
posted @ 2012-06-01 14:24 qanholas 阅读(332) | 评论 (0) 编辑
摘要: --动态处理select A.StuName,A.BZKTypeName,cast(A.BKCODE as varbinary(MAX)) even, row_number() over (partition by StuName,BZKTypeName order by getdate()) ID into #t1 from BKLIST A --where StuName=‘林健辉‘ declare @sql1 varchar(max) declare @sql2 varchar(max) declare @id int declare @maxid int select 阅读全文
posted @ 2012-05-31 14:35 qanholas 阅读(60) | 评论 (0) 编辑
摘要: 1.只有关联条件有非聚集索引--清空缓存DBCC FREEPROCCACHE WITH NO_INFOMSGSDBCC FREESESSIONCACHE WITH NO_INFOMSGSDBCC FREESYSTEMCACHE(‘All‘) WITH NO_INFOMSGSDBCC DROPCLEANBUFFERS WITH NO_INFOMSGSSET NOCOUNT onCREATE TABLE #result(状态 varchar(20),[id(毫秒)] INT,[guid(毫秒)] INT)DECLARE @start INTDECLARE @end INTSET @阅读全文
posted @ 2012-05-30 11:49 qanholas 阅读(263) | 评论 (0) 编辑
摘要: 【sqlserver】:sqlserver 认为 null 最小。升序排列:null 值默认排在最前。要想排后面,则:order by case when col is null then 1 else 0 end ,col降序排列:null 值默认排在最后。要想排在前面,则:order by case when col is null then 0 else 1 end , col desc【oracle】:oracle认为 null 最大。升序排列,默认情况下,null值排后面。降序排序,默认情况下,null值排前面。有几种办法改变这种情况:(1)用 nvl 函数或decode 函数 将n阅读全文
posted @ 2012-05-29 10:29 qanholas 阅读(273) | 评论 (0) 编辑
摘要: --生成码表if exists (select * from dbo.sysobjects where id = object_id(N‘[codetable]‘) and OBJECTPROPERTY(id, N‘IsUserTable‘) = 1)drop table [codetable]GOdeclare @j varchar(8000),@f varchar(8000)select @j=‘一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马 乡丰王井开夫天无元专阅读全文
posted @ 2012-05-25 15:07 qanholas 阅读(859) | 评论 (0) 编辑
摘要: declare @class varchar(max)= dbo.super_GetSubClass1(378,default,default); set statistics io on set statistics time on -- XML SELECT B.value FROM ( SELECT [values] = CONVERT(xml,‘<root><v>‘+REPLACE([values],‘,‘, ‘</v><v>‘) +‘</v></root>&阅读全文
posted @ 2012-05-25 10:33 qanholas 阅读(78) | 评论 (0) 编辑
摘要: 问题描述:有表tb,如下:idvalues----------- -----------1aa,bb2aaa,bbb,ccc欲按,分拆values列,分拆后结果如下:idvalue----------- --------1aa1bb2aaa2bbb2ccc1.旧的解决方法 SELECTTOP8000id=IDENTITY(int,1,1)INTO#FROMsyscolumns a,syscolumns bSELECTA.id,SUBSTRING(A.[values],B.id,CHARINDEX(‘,‘,A.[values]+‘,‘,B.id)-B.id)FROM阅读全文
posted @ 2012-05-25 10:31 qanholas 阅读(42) | 评论 (0) 编辑
摘要: 数据类型范围存储bigint-2^63(-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,807)8字节int-2^31(-2,147,483,648)到 2^31-1(2,147,483,647)4字节smallint-2^15(-32,768)到2^15-1(32,767)2字节tinyint0 到2551字节money-922,337,203,685,477.5808到922,337,203,685,477.58078字节 smallmoney-214,748.3648到214,748.36474字节decimal...阅读全文
posted @ 2012-05-24 16:06 qanholas 阅读(1658) | 评论 (0) 编辑
摘要: with tiesWITH TIES指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOPn(PERCENT) 行中的最后一行的该参数值相同。只能在 SELECT 语句中且只有在指定了 ORDER BY 子句之后,才能指定 TOP...WITH TIES。注意:返回的记录关联顺序是任意的。ORDER BY不影响此规则来源:MSDN,http://msdn.microsoft.com/zh-cn/library/ms189463.aspx通俗解 释如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent阅读全文
posted @ 2012-05-18 14:31 qanholas 阅读(980) | 评论 (0) 编辑
摘要: 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起。后来在technet上搜索发 现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的。本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供 大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法不 去深究了,只是把几个例子实际运行,剖析一番。 使用merge同时执行insert和update操作我们经常会有这样的需求,根据某个字段或多个字段查找表中的一行或多行数.阅读全文
posted @ 2012-05-18 11:54 qanholas 阅读(4621) | 评论 (1) 编辑
摘要: SET QUOTED_IDENTIFIER ONSELECT * FROM "student" WHERE stuname=‘江玉婷‘ SET QUOTED_IDENTIFIER ONSELECT * FROM [student] WHERE stuname=‘江玉婷‘ SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stuname=‘江玉婷‘ SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stunam阅读全文
posted @ 2012-05-18 09:40 qanholas 阅读(80) | 评论 (0) 编辑
摘要: --SQLServer2008中新增功能:可以使用单个Insert命令插入多行。 CreatetableDemo_Values(PKIDintnotnullidentity(1,1)primarykey,DNameNvarchar(20)null,DCodeNVarchar(30)null,DDatedatetimenull)go--thisSQLisonlyforSQLServer2008InsertintoDemo_Values(DName,DCode,DDate)values(‘DemoA‘,‘AAA‘,GETDATE()),(‘DemoB‘阅读全文
posted @ 2012-05-18 09:08 qanholas 阅读(90) | 评论 (0) 编辑
摘要: --链接服务器"LINK_110"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。--消息 7391,级别 16,状态 2,第 4 行--无法执行该操作,因为链接服务器 "LINK_110" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。阅读全文
posted @ 2012-05-17 17:10 qanholas 阅读(852) | 评论 (0) 编辑
摘要: SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归。在SQL server 2005中,我们可以使用CTE,当然,好的数据结构设计可以避免你使用CTE,请看这里:http://www.cnblogs.com /downmoon/archive/2009/10/23/1588405.html如果你是一个数据库设计新手,那么在sql server 2008中可以使用新的原生分层结构数据hierarchyid。关于它的详细说明,请看MSDN:http://msdn.microsoft.com /zh-cn/library/b阅读全文
posted @ 2012-05-17 10:19 qanholas 阅读(63) | 评论 (0) 编辑
摘要: 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知 识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过。所以本文并不会深入讨论这些主题。索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 精简来说,索引是一种结构.在SQL Server中,索引和表(这里指的是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一阅读全文
posted @ 2012-05-16 14:56 qanholas 阅读(87) | 评论 (0) 编辑
摘要: create procedure SP_GET_TABLE_INFO @ObjName varchar(128) /* The table to generate sql script */as declare @Script varchar(255)declare @ColName varchar(30)declare @ColID TinyIntdeclare @UserType smallintdeclare @TypeName sysnamedeclare @Length smallintdeclare @Prec smallintdeclare @Scale smallintdecl阅读全文
posted @ 2012-05-14 14:00 qanholas 阅读(100) | 评论 (0) 编辑
摘要: SET NOCOUNT ON DECLARE @tbname VARCHAR(30)SET @tbname = ‘用户档案‘DECLARE @columns TABLE ( id INT, NAME VARCHAR(30) )INSERT @columns SELECT ROW_NUMBER() OVER ( ORDER BY columns.object_id ) id, columns.NAME FROM sys.columns JOIN sys.objects ON columns.obje...阅读全文
posted @ 2012-05-13 22:27 qanholas 阅读(75) | 评论 (0) 编辑
摘要: 昨天有人在群里讨论SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY,在些作个标记和小结。 其实MSDN对此有官方解释:这三个函数都返回最后生成的标识值。 但是,上述每个函数中定义的“最后”的作用域和会话有所不同。 1、IDENT_CURRENT 返回为某个会话和当前作用域中的指定表生成的最新标识值。 如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。 2、@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。...阅读全文
posted @ 2012-05-11 10:55 qanholas 阅读(99) | 评论 (0) 编辑
摘要: MS SQL Server:DDL触发器DDL触发器 (本文转摘于网络)1. DDL Trigger触发事件总汇:在创建用来监视并响应该数据库或服务器实例中的活动的事件通知时,可以指定相应事件类型或事件组。 DDL_DATABASE_LEVEL_EVENTS包括: DDL_TRIGGER_EVENTS, DDL_FUNCTION_EVENTS, DDL_SYNONYM_EVENTS, DDL_SSB_EVENTS, DDL_DATABASE_SECURITY_EVENTS, DDL_EVENT_NOTIFICATION_EVENTS, DDL_PROCEDURE_EVENTS, ...阅读全文
posted @ 2012-05-10 16:48 qanholas 阅读(459) | 评论 (0) 编辑
摘要: CREATE TABLE [dbo].[Student2]([StuID] [int] NULL,[StuNum] [varchar](50) SPARSE NULL,[StuNamePY] [varchar](50) SPARSE NULL,[StuNameWB] [varchar](50) SPARSE NULL,[StuName] [varchar](50) SPARSE NULL,[IDNumber] [varchar](18) SPARSE NULL,[FileNo] [varchar](50) SPARSE NULL,[DocType] [varchar](50) SPARSE N阅读全文
posted @ 2012-05-08 14:12 qanholas 阅读(48) | 评论 (0) 编辑
摘要: declare @TableType varchar(max) = ‘‘declare @tablename varchar(max)set @tablename=‘student‘select @TableType=@TableType+case when types.name in (‘varchar‘,‘nvarchar‘,‘char‘,‘nchar‘,‘varbinary‘)then ‘declare @‘+columns.name+‘‘+&#阅读全文
posted @ 2012-05-08 14:10 qanholas 阅读(34) | 评论 (0) 编辑
摘要: 在做SQL Server 2005 的群集维护时, 碰到了这样一个问题:当资源组在一个节点上的时候, 用sa登录数据库, 从management studio中查看用户数据库的属性, 正常; 但是将资源组转移到另一个节点时, 用sa登录数据库, 从management studio中查看用户数据库的属性, 却报如下错误:标题: Microsoft SQL Server Management Studio------------------------------无法显示请求的对话框。 ------------------------------其他信息:无法显示请求的对话框。 (SqlMgmt)阅读全文
posted @ 2012-05-07 16:11 qanholas 阅读(1247) | 评论 (0) 编辑
摘要: 在论坛上看到这样一个帖子, 原文如下:在我的SQL Server2008R2上, 试了一下, 果然是这样, 转换成numeric时报错..看样子很奇怪, 明明函数ISNUMBERIC的返回值是1, 但是转换却不成功, 为什么呢?查了一下BOL, 发现如下的解释:ISNUMBERIC函数判断表达式是否是以下类型之 一:intrealnumericbigintmoneysmallintsmallmoneytinyintfloatdecimal看样子 ISNUMBERIC不只判断是否是NUMBERIC类型, 也判断其他如money等类型.试了一下转换成money型, 结果就没有报错, 语句如下:SELE阅读全文
posted @ 2012-05-07 16:09 qanholas 阅读(138) | 评论 (0) 编辑
摘要: -得到事务回滚,数据库备份/还原预计需要的时间SELECT session_id --回滚的进程ID, 可以用dbcc inputbuffer (spid) 来查询进程所做的操作 ,start_time--进程开始command的时间 ,status--进程状态 ,Command--进程执行的命令 ,DB_NAME(database_id) AS ‘database_name‘--进程涉及的数据库 ,USER_NAME(user_id) AS ‘USER_NAME‘--提交进程的用户 ,blocking_session_id--阻塞该进程的进程ID ,wait_阅读全文
posted @ 2012-05-07 16:08 qanholas 阅读(265) | 评论 (0) 编辑
摘要: 前几天碰到一个问题, SQL Server 2008 SP2 上的一个检查数据库完整性的维护计划失败了, 这个维护计划没有过任何的修改.先查看一下执行这个维护计划的job的历史, 有类似以下的报错:Executing query "DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp...".: 100% completeEnd Progress DTExec: The package execution returned DTSER_FAILURE (1).Started: 10:14:30 AM Finished : 10:14阅读全文
posted @ 2012-05-07 16:07 qanholas 阅读(3775) | 评论 (0) 编辑
摘要: set nocount ondeclare @lock table(spid int,dbid int,objid int,indid int,type varchar(6),resource varchar(max),mode varchar(200),status varchar(200))declare @loclinfo table(EventType varchar(max),Parameters int,EventInfo varchar(max))declare @sql table (sql varchar(max))insert @lock exec sys.sp_lock;阅读全文
posted @ 2012-05-04 09:52 qanholas 阅读(52) | 评论 (0) 编辑
摘要: declare @TableType varchar(max) =‘‘declare @tablename varchar(max)set @tablename=‘student‘select @TableType=@TableType +case when types.name in (‘varchar‘,‘nvarchar‘,‘char‘,‘nchar‘,‘varbinary‘) then ‘[‘+columns.name+‘]‘+‘ &#阅读全文
posted @ 2012-05-04 09:15 qanholas 阅读(37) | 评论 (0) 编辑
摘要: 最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁:?1234567891011121314SELECT @findCount=COUNT(id) FROM MyTableWHERE [fk_related_id]=@ArgumentIF (@findCount > 0)BEGINROLLBACK TRANSACTIONRETURN ERROR_CODEENDINSERT INTO MyTable ([fk_related_id],…)VALUES (@Argument,…)COMMIT TRANSACTIONRETURN 阅读全文
posted @ 2012-05-02 17:26 qanholas 阅读(3294) | 评论 (0) 编辑
摘要: CLR函数脚本 ---------------------------------------------------------------------------------using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Collections;/// <summary>/// 用户自定CLR 函数,用来生成一个序列/// </summary>public阅读全文
posted @ 2012-05-02 12:03 qanholas 阅读(968) | 评论 (3) 编辑
摘要: “在 master 数据库中记录的数据库所有者 SID 与在数据库 ‘**‘ 中记录的数据库所有者 SID 不同。应该通过使用 ALTER AUTHORIZATION 语句重置数据库 ‘*‘ 的所有者来更正此情况。 ” 解决:Sp_changedbowner ‘sa‘,true --sa为需要使用的用户名,在相应的数据库中执行即可阅读全文
posted @ 2012-05-02 10:05 qanholas 阅读(1039) | 评论 (0) 编辑
摘要: 一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值 对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为 object类型,所以Hashtable可以支持任何类型的keyvalue键值对.二,哈希表的简单操作在哈希表中添加一个keyvalue键值 对:HashtableObject.Add(key,value);在哈希表中去除某个keyvalue键值对:Hashtabl阅读全文
posted @ 2012-05-02 09:20 qanholas 阅读(69) | 评论 (0) 编辑
摘要: Float and RealApproximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly. The ISO synonym forrealisfloat(24).Data typeRangeStoragefloat- 1.79E+308 to -2.23E-308, 0 and 2.23E-3阅读全文
posted @ 2012-05-01 14:42 qanholas 阅读(140) | 评论 (0) 编辑
摘要: decimal数据类型最多可存储38个数字,所有数字都能够放到小数点的右边。decimal数据类型存储了一个准确(精确)的数字表达法;不存储值的 近似值。定义decimal的列、变量和参数的两种特性如下:p 小数点左边和右边数字之和,不包括小数点。如123.45,则p=5,s=2。指定精度或对象能够控制的数字个数。s指定可放到小数点右边的小数位数或数 字个数。p和s必须遵守以下规则:0 <=s<=p<= 38。numeric和decimal数据类型的默认最大精度值是38。在Transact-SQL中,numeric与decimal数据类型在功能上 等效。当数据值一定要按照指定精确存阅读全文
posted @ 2012-05-01 14:36 qanholas 阅读(101) | 评论 (0) 编辑
摘要: alter proc test @sourcetablename varchar(30), @targettablename varchar(200), @id varchar(8)as declare @cols varchar(max);declare @cols1 varchar(max);declare @cols2 varchar(max);with cols as ( select columns.name,‘s.‘+columns.name name1, ‘d.‘+columns.name+‘=‘+‘s.‘+colu阅读全文
posted @ 2012-04-27 11:42 qanholas 阅读(67) | 评论 (0) 编辑
摘要: 症状如果同时满足以下两个条件,Microsoft Search 服务 (MSSearch) 可能无法启动,或可能导致 CPU 使用率达到 100%: 从 SQL S...如果同时满足以下两个条件,Microsoft Search 服务 (MSSearch) 可能无法启动,或可能导致 CPU 使用率达到 100%:从 SQL Server 2000 删除了 BUILTIN\Administrators 帐户。Microsoft Search 服务配置为在本地系统帐户以外的帐户下启动。原因不支持 Microsoft Search 服务在本地系统帐户以外的帐户下运行。不支持 Microsoft Se阅读全文
posted @ 2012-04-26 21:50 qanholas 阅读(108) | 评论 (0) 编辑
摘要: 本来是自动的,修改为这个之后很快,跟本地执行很接近阅读全文
posted @ 2012-04-25 10:54 qanholas 阅读(130) | 评论 (0) 编辑
摘要: alter function fn_GetColumns ( @TableName varchar(max) )returns varchar(max)as begin declare @cols varchar(max); with cols as ( select columns.name from sys.columns join sys.objects on sys.columns.object_id = sys.objects.object_id and objects.name = @TableName ...阅读全文
posted @ 2012-04-21 21:33 qanholas 阅读(66) | 评论 (0) 编辑
摘要: --Descript:利用CHECKSUM建立索引USE tempdb ;GO--DROP TABLE dbo.TCREATE TABLE dbo.T ( ID INT PRIMARY KEY IDENTITY(1, 1) , [Name] NVARCHAR(MAX) ) ;--这里我偷懒一下,自己注意在IDE中,关闭,不要插入太多了.哈WHILE 1 = 1 INSERT INTO dbo.T SELECT CAST(NEWID() AS NVARCHAR(36)) SELECT *FROM dbo.T--表 ‘T‘。扫描计数 1,逻辑读取 5059 次,物理读取 0 次,预阅读全文
posted @ 2012-04-21 11:31 qanholas 阅读(148) | 评论 (0) 编辑
摘要: 优化SQL Server 2000的设置 SQL Server已经为了优化自己的性能而进行了良好的配置,比今天市场其他的关系型数据库都要好得多。然而,你仍然有几项设置需要进行修改,以便你的数据库 每分钟可以处理更多的事务(TPM)。本篇文章的目的就是讨论这些设置。我们忽略那些可以通过硬件配置或者表或者索引设计提高的性能,因为这些内容在本篇 文章范围之外。 破碎页面检测 在我们开始讨论服务器配置开关之前,让我们快速浏览一下你的模型数据库??或者说用作构建新的数据库的基础的模板。默认情况下,你可以在数据库中创建存储 过程、函数等类似的东西,随后他们将会被加入新创建的数据库中。 要优化性能,你也许...阅读全文
posted @ 2012-04-21 10:49 qanholas 阅读(764) | 评论 (0) 编辑
摘要: 如何提高性能SELECT TOP n * FROM [tablename] ORDER BY NEWID()想从数据库随机获得一条记录在网上查了一下全都是这个方法但性能太差 千万级的表要20秒以上如何提高性能SELECT TOP 1 * FROM [tablename] ORDER BY NEWID()SELECT * FROM [tablename] where id=(select count(*)+1 from tablename)*rand()如果id连续,这个就是最快的方法。SELECT top 1 * FROM [tablename] where id>=(select ma阅读全文
posted @ 2012-04-21 10:47 qanholas 阅读(1974) | 评论 (0) 编辑
摘要: 今天接到一用户问题,ArcSDE for SQL Server 数据库,利用ArcGIS桌面创建数据集时,提示如下错误:其实这个错误已经非常明显的告诉了用户,查询的开销比数据库默认设置的小才造成的该错误“查询 开销”是指在特定硬件配置中完成查询所需的估计占用时间(秒)那么数据库哪个参数与“查询开销”有关呢?MSSQLSERVER_8649详细信息产品名 称SQL Server产品版本10.50产品内部版本号10.50.0000.00事件 ID8649事件源MSSQLSERVER组件SQLEngine符号名称COST_TOO_HIGH消息正文查询已取消,因为此查询的估计开销 (%d) 出了配置的阈值阅读全文
posted @ 2012-04-19 15:02 qanholas 阅读(1471) | 评论 (0) 编辑
摘要: SELECT [Car] , DeviceNo , MIN([StateTime]) [StateTime] , MAX([EndTime]) [EndTime] , CAST(( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) / 3600 ) AS VARCHAR(12)) + ‘:‘ + CAST(( ( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) - ( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) / 3600 ) * 360阅读全文
posted @ 2012-04-18 11:58 qanholas 阅读(163) | 评论 (0) 编辑
摘要: UPDATE msdb.dbo.sysschedulesSET freq_subday_interval = 1 , date_modified = GETDATE() , version_number = version_number + 1WHERE ( schedule_id = 64 )阅读全文
posted @ 2012-04-16 14:07 qanholas 阅读(24) | 评论 (0) 编辑
摘要: 很多做架构设计、程序开发、运维、技术管理的朋友可能或多或少有这样的困惑:SQLServer到底支持多少连接数的并发?SQLServer是否可以满 足现有的应用吗?现有的技术架构支持多少连接数的并发?在硬件性能与网络性能足够理想的情况下理论上可以支持多少并发连接?生产环境中的数据库现在的并发 量是多少?如何监控现有数据库并发的数量?生产环境中的并发量距离理论上的最大并量发还差多少?为此,我专门写程序做了下测试,利用循环不断的打开连接并 保持连接打开不关闭,测试代码如下:1usingSystem; 2usingSystem.Collections.Generic; 3 4namespaceSQLServ阅读全文
posted @ 2012-04-15 16:37 qanholas 阅读(153) | 评论 (0) 编辑
摘要: SQL Server 阻止了对组件 ‘Agent XPs‘ 的 过程 ‘dbo.sp_set_sqlagent_properties‘ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Agent XPs‘。有关启用 ‘Agent XPs‘ 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 (.Net SqlClient Data Provider)sp_configure ‘show advanced opt阅读全文
posted @ 2012-04-13 17:28 qanholas 阅读(1908) | 评论 (0) 编辑
摘要: USE 出问题的库名; EXEC sp_changedbowner ‘数据库系统管理员‘;阅读全文
posted @ 2012-04-13 12:35 qanholas 阅读(101) | 评论 (0) 编辑
摘要: 错误提示(配置发布和禁用复制功能时提示 分发服务器未正确安装。):1、无法为本地服务器找到分发服务器或分发数据库。可能未安装分发服务器,也可能在分发服务器上未将本地服务器配置为发布服务 器。2、SQL Server 无法禁用“xxxx”上的发布和分发。------------------------------其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------分发服务器未 正确安装,所以无法使数据库不可发布。问题原因: 服务器换过主机,所以此时机器阅读全文
posted @ 2012-04-13 11:23 qanholas 阅读(855) | 评论 (0) 编辑
摘要: USE master EXEC sp_removedbreplication ’数据库名称’ GO运行即可sp_removedbreplication该存储过程在发布服务器的发布数据库中或在订阅服务器的订阅数据库中执行。该过程将从执行它的 数据库中删除所有复制对象,但它不会从其他数据库(例如,分发数据库)中删除对象。注意: 只有当其他删除复制对象的方法都失败后,才应当使用此过程。有关这些方法的详细信息,请参阅删除复制。Transact-SQL 语法约定语法sp_removedbreplication [ [ @dbname = ] ‘dbname’ ] [ , [ @type = ] type 阅读全文
posted @ 2012-04-12 17:24 qanholas 阅读(1190) | 评论 (0) 编辑
摘要: 講到 SQL Server 2008 效能調校,這可是一門大大的學問,但是若能掌握一些基本的 SQL Server 資料庫運作原理,要能成為 SQL Server 效能調校的專家其實並不困難。我們都知道學習這些原理並不難,看書就會了,難的是如何才能在實務管理工作上真正的融會貫通、靈活運用這些已知的知識,再搭 配一些方便的工具幫你快速取得所要的重要資訊,進而做出效能調校的判斷與改善現有資料庫的效能問題。今天我打算來分享一個分析索引使用量統計的技巧,來改 善資料庫「寫入」效率的問題。一般來說,我們在做資料庫效能調校時,都會想調整「讀取」資料的效能,也就是建立「非叢集索引」來縮短篩選與取得資料的時間阅读全文
posted @ 2012-04-12 09:46 qanholas 阅读(553) | 评论 (0) 编辑
摘要: 微軟在 SQL Server 2005 Service Pack 2 推出的時候也釋出了一套免費的 Performance Dashboard Reports 自訂報表,透過此報表可以很輕易的分析出整台 SQL Server 的執行效能,是一個非常非常實用的效能分析工具,幾乎是每位 DBA 必備的工具之一,可惜的是到了 SQL Server 2008 之後就不再更新,以致於無法正常安裝到 SQL Server 2008 之後的版本,本文章將說明正確的安裝步驟,讓此報表也能夠在 SQL Server 2008 上正確執行。在我們下載完 SQL Server 2005 Performance Da阅读全文
posted @ 2012-04-12 09:23 qanholas 阅读(172) | 评论 (0) 编辑
摘要: 前言我看过不少对Bit字段能否建立索引,以及建立索引后性能如何的讨论,还有朋友建议用Tinyint代替Bit,我在这里深入研究一下:研究方法: 一、建立六张表,具体说明见SQL语句中的注释部分:建表Sql语句Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com /-->CREATEDATABASEIndexTestGOUSEIndexTestGO--bit无索引,0、1相等 CREATETABLEdbo.TestBitNoIndex(TestIDINTNOTN阅读全文
posted @ 2012-04-09 21:48 qanholas 阅读(537) | 评论 (0) 编辑
摘要: Now, the question is, do you really WANT an index on a BIT column? We‘re going to run some experiments, but in general, it is highly unlikely that you will get much use out of such an index. The exception is when the data is heavily weighted towards, say, 1 (e.g. 95-99% of the table), and you ar阅读全文
posted @ 2012-04-09 21:14 qanholas 阅读(186) | 评论 (0) 编辑
摘要: SELECT TOP 100 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * ( user_seeks + user_scans ), 0) , user_seeks , user_scans , avg_total_user_cost , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = ..阅读全文

数据库高手(DBA专家 ,SSIS,replacation ,tourble shooting)

标签:

原文地址:http://www.cnblogs.com/ifreesoft/p/5040629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!