- 博客(51)
- 资源 (12)
- 收藏
- 关注
原创 ISDATE函数对于1753年之前的日期都返回0
今天看到一个帖子,将1753年之前的一个日期用ISDATE函数会返回0,自己也做了多个测试,发现确实如此: declare @date asdate set @date =convert(date,'17000101') print @date --可以转化为Date类型 print ISDATE('17000101') 结果确实返回0: 1700
2012-08-31 23:17:59 2158 1
原创 使用SQLIO评估数据库磁盘性能
对于DBA来说,安装SQLServer之前先要了解磁盘的性能,这个很重要。微软提供了SQLIO可以帮助我们在系统安装之前评估磁盘的性能。 1. 下载SQLIO并安装 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20163 2.修改SQLIO’s 配置文件 如果直接启动SQLI
2012-08-31 11:40:01 3810 1
原创 你使用DBA数据库吗?
曾经看到一篇文章,对于DBA来说应该创建自己的专门数据库,这个数据库存储的是DBA进行数据库维护调优的脚本或者配置信息,而且这个数据库只开放给SYSADMIN访问,普通用户无法访问。 我也是这个做法,在每个单独的Instance上面创建一个单独的数据库给DBA使用。在这个数据库存储对数据库管理或者调优的相的脚本包括存储过程,View 等等。当发现服务器出现问题的时候,只要打开自己的DBA数
2012-08-30 14:26:25 1314
原创 Error: 17172, Severity: 16 SNIInitialize() failed with error 0x2.
为了安装SCCM 2012,今天将测试数据库升级到SQL Server 2008 SP3 + CU4, 但是改为端口后发现Servcie无法启动。 从SQL Server errorlog中看到下面的错误信息: Error: 17172, Severity: 16, State: 1.SNIInitialize() failed with error 0x2.SQL
2012-08-29 15:32:27 2556
原创 WM Workstation 8创建SQL Server 2012 集群(cluster) Part2
在Part1中我们需要创建Cluster的资源都已经准备好了,下面创建windows Cluster并且安装SQL Server 2012 . 1. 创建Windows Cluster 输入要加入Cluster的机器名: 验证Cluster配置: 如果发现有问题的可以点开看里边具体的错误修正后重新运行验证。输入Clust
2012-08-27 20:22:16 2975
原创 WM Workstation 8创建SQL Server 2012 集群(cluster) Part1
SQL Server提供了集群的高可用性,但是因为硬件的要求比较高,所以一般我们很难找到物理机做测试,不过我们可以使用VMWorkstation模拟硬件从而安装SQLServer集群。 由于安装DC和配置网卡都比较容易实现,所以这里我就不提了,网上可以找到很多资料。下面主要是创建共享磁盘到安装SQLServer 2012 Cluster的过程. 服务器列表:
2012-08-27 17:03:18 4154
原创 SQL Server 2012 使用OFFSET FETCH轻松实现分页
SQL Server 2012中提供了新的T-SQL(OFFSETFETCH)可以让我们更方便的实现分页功能。 先看一下以前是如何实现分页的: ----使用ROW_NUMBER() CTE查找第一页20行记录WITH Paging AS(SELECT TransactionID , ProductID , Trans
2012-08-23 11:57:25 1972
翻译 使用VM Workstation8 创建共享磁盘
今天准备测试SQL Server 2012 Cluster的功能,但是Cluster需要共享磁盘。按照以前在VM7中的方法增加磁盘然后修改都失败了,后来看到网上用iSCSI Software Initiator模拟共享磁盘的。测试下来完全没有问题,今天把这篇文章转载过来跟大家分享。 Creating a SQL Server Failover Cluster in virtual mach
2012-08-22 15:58:51 2351
转载 SQL Server 密码丢失如何重置
如果你WINDOWS密码和SQL Server密码都忘记了,无法连接到SQL Server,有没有办法可以恢复密码呢?答案是将数据单用户模式启动,用Windows Local administrator连接到SQL Server,然后重置密码。 You may have faced the issue of losing the SQL Server SA password. Perh
2012-08-22 10:50:37 3261
原创 初探SQL Server 2012 包含数据库
SQL Server将认证和授权分散给了不同的对象来完成。SQL Server的“登录名”用于认证,连接SQL Server的Windows账号或账号所在的组必须在SQL Server中有对应的登录名才能成功登录到SQL Server上。而每个数据库中的“用户”被授予了操作数据库中对象的相应权限。登录名和用户之间通过SID联系起来。每个登录名在master数据库中都记录有该登录名所对应的SID。而
2012-08-22 10:25:38 1645
翻译 SQL Server 2008和2008 R2评估版过期的解决办法
今天在论坛看到有人遇到评估版本过期的问题,正好以前自己碰到过,所以把网上解决这个问题的步骤发出来供大家参考。 (不需要卸载重装,只需要做版本升级) 原文来自:http://www.sqlcoffee.com/Troubleshooting073.htmApplies to: Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2.
2012-08-21 21:25:53 9477
原创 Msg 3059 This BACKUP or RESTORE command is not supported on a database mirror or secondary replica
配置好 2012 AlwaysOn High availability Group就想体验一下在辅助数据库做备份的新功能。在辅助服务器备份,这样可以减轻主服务器的负载(非常好的一项改进,以前Databasemirroring辅助数据库是不可以访问的)。 但是备份的时候却报错: Backup databasetesttodisk='c:\test.bak' Msg 30
2012-08-21 16:56:50 3352 1
原创 SQL Server Always on Listener 配置和作用
在SQLServer 2012 Always On中我们可以通过创建一个可用性组侦听器来提供到给定可用性组的数据库的客户端连接。可用性组侦听器是一个虚拟网络名称 (VNN),客户端可连接到此名称以访问 AlwaysOn 可用性组的主副本或辅助副本中的数据库。可用性组侦听器使客户端无需知道它要连接到的 SQL Server物理实例的名称,即可连接到某个可用性副本(相当于SQLServer集群的V
2012-08-21 15:00:30 3982
原创 使用XML Schema验证XML数据输入
现在XML使用的越来越多,在SQL Server表中我们可以创建XML列存储数据。 昨天在论坛看到有人说创建了一个存储过程处理XML,但是插入目标表的时候报错,而报的错误不详细。 其实这个问题的根本原因是XML的数据有问题,应该在插入的时候对输入的数据进行验证(对于用户输入的数据一定要做验证)。 其实SQL Server已经提供了XML Schema验证,下面我们看一个例子: --
2012-08-21 13:45:50 1284
翻译 SQL Server 2008 R2 系统配置检查器的检查参数和妨碍性问题的解决办法
在安装SQL Server的时候经常会遇到安装失败,这是很伤脑筋的事情,花费很多时间和精力也不一定能够解决。 针对于规则检查导致的安装错误,如果有一份列表能够说明规则以及解决办法将会给我们提高极大的帮助。微软其实已经帮助我们提供了类似的文档。 安装操作完成之前,SQL Server 安装程序会验证您的计算机配置。下表描述了系统配置检查器的检查参数和妨碍性问题的解决办法。
2012-08-20 20:47:36 5279
原创 SQL Server 2012 Always on Availability Groups安装Step by step 3
可用性组我们已经创建成功了,现在测试一下Node2 上读取数据以及Failover. 1. 数据测据:Node1上创建表test插入记录 在Node2上访问test数据库,数据可以查到(在Mirror中是不可以查询的,而且数据同步不会导致Node2的连接断掉): 2. Failover测试: 连接到Node2:
2012-08-20 15:34:16 7118 17
原创 SQL Server 2012 Always on Availability Groups安装Step by step 2
Part1中我们已经配置了Cluster,Part2 我们安装SQL Server 2012 评估版(要使用64位的SQLServer, X86不支持Always On)并且配置Alaways On Group. 1. 以管理员身份安装 2.选择单机安装(不是集群安装) 3.SQL Server 2012的新功能,可以在安装的时候搜索最
2012-08-20 15:34:12 9087 2
原创 SQL Server 2012 Always on Availability Groups安装Step by step 1
SQLServer 2012 Always on是针对高可用性和灾难恢复的新解决方案。可以配置一个或多个辅助副本以支持对辅助数据库进行只读访问,并且可以将任何辅助副本配置为允许对辅助数据库进行备份。 这样就提供了硬件的使用效率。 “可用性组”针对一组离散的用户数据库(称为“可用性数据库”,它们共同实现故障转移)支持故障转移环境。一个可用性组支持一组主数据库以及一至四组对应的辅助数据库。可
2012-08-20 15:33:47 13462 9
原创 一条语句将字段中的多个空格变成一个空格
这里先产生一些测试数据,前后中间都有多个空格: DECLARE @test TABLE(stringVARCHAR(8000)) INSERT INTO @test(string) SELECT N' 做 个 测试 'UNIONALL SELECT N' OK ' --第一步是将左右的空格去掉--第二不是将空格替换成空格加特殊字符,这里我是用c
2012-08-18 14:52:24 3087
原创 几个有用的DBCC 命令
--file headerpages (存储了文件的元数据信息,如果损坏没办法修复) DBCC FILEHEADER('database', 1); --查看Boot Page信息(page 9是boot page,如果损坏没办法修复) DBCC TRACEON(3604);GODBCC PAGE(DBA, 1, 9, 3);GODBCC TRACEOFF(
2012-08-18 09:54:42 1069
翻译 你需要差异备份吗?
通过下面的脚本可以计算出数据库从上次完整备份之数据的更改率,在Pual之前还没有人写过类似的代码。 根据运行的结果,我们可以知道数据库的数据自上次完整备份之后的数据修改程度,如果更概率非常大的情况下,我们可以直接选择完整备份,而省掉差异备份,如果更改率非常小则可以选择差异备份。(当然如果数据库小的话即使数据更改很小也不需要差异备份) 即使不需要调整你的备份计划你也可以对数据库的状况
2012-08-18 09:49:06 1427
原创 一条语句将一个字段数据换转成一个字符串
例如数据 列Namename abcd最后的结果a*b*c*d*declare @test table( namevarchar(10)) insert into @testvalues('a'),('b'),('c'),('d'); select distinct (s
2012-08-18 07:28:55 2429 3
原创 DBCC ACTIVECURSORS 查看未关闭的游标
DBCC ACTIVECURSORS 这个命令会将当前系统所有未关闭的游标打印出来: SPID Cursor Id Pages Stmt Buffer Pool Stolen. 是buffer pool中如下5个部分的总和(General, Query Plan, Optimizer, Utilities, Connection). 这个部分的内存分配页面都是小于8KB的。
2012-08-17 14:00:20 1419
原创 SQL Server 数据库完整备份不只是备份数据还有日志
以前认为SQLServer完整备份只是备份数据库的数据而不包含日志,其实这是错误的。使用RESTOREHEADERONLY可以帮我们验证(msdb.dbo.backupset也包含相应的信息)。 RESTORE HEADERONLY回包含特定备份设备上所有备份集的所有备份标头信息的结果集。查询结果包含三列: FirstLSN numeric(25,0)
2012-08-15 14:57:50 2957 1
原创 无法删除Maintainplan Job 错误547
今天删除SQLServer维护计划的时候出现下面的错误: The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id". The conflict occurred in database "msdb", table "dbo.sysmaintplan_subplans". (Micros
2012-08-15 11:14:50 3272
原创 Reporting Service 2005到2008升级测试
SQL Server 2008的Reporting不管是在功能性能还是管理上上都比2005有了很大的提高,所以很多公司都会将Reporting2005进行升级。 我这次的测试是将Reporting的数据库从2005迁移到2008上(不是直接在原来的服务器升级)。 升级步骤: 1. 首先备份SQL Server 2008的ReprotServer和ReportSer
2012-08-15 10:33:38 2338
原创 SQL Server 自动更新统计信息的基本算法
最初接触SQL Server的时候认为SQLServer数据更改的同时就会相应的更新统计信息,其实SQL Server不是这样做的.基于性能考虑,SQL Server使用下面的算法更新统计信息。 自动更新统计信息的基本算法是:· 如果表格是在 tempdb数据库表的基数是小于 6,自动更新到表的每个六个修改。· 如果表的基数是大于 6,但小于或等
2012-08-14 13:36:04 1674
原创 查询sys.dm_os_wait_stats 了解数据库等待信息
当用户告诉你数据库很慢的时候,你要怎么开始Narrowdown问题呢?SQL Server提供了sys.dm_os_wait_stats可以帮助我们查看CPU,内存或者IO的等待状况。SQL Server执行过程中中等待信息会被记录到这个View中。 通过下面的语句我们可以抓取一段时间内SQL Server等待的累积信息,通过对这些信息进行排序可以找出资源瓶颈。 先看一下各个W
2012-08-14 11:06:39 3273
原创 数据库镜像和日志传送配合完成高可用性以及灾难恢复
数据库现在已经变成企业的基石,所以需要保证数据库的高可用性。同时也需要防止意外事情导致整个数据中心出现问题(比如地址,水灾等等)。所以对于数据中心高可用性和灾难恢复是同时要考虑。 使用SQL Server的数据库镜像和日志传送两项功能可以帮助我们完成上述目标。 情景:A 数据中心有SQL2K8和R2两台数据库服务器,B数据中心有SQL28(与A地域不同,为了防止意外导致整个A数据中
2012-08-14 10:04:04 5057
原创 测试一个数据库Log shipping到多SQL Server实例
今天测试了一个Logshipping多个数据库实例(测试数据库dbLogTest,主服务器实例SQL2K8,Secondary1实例R2,Secondary2实例 SQL28),步骤如下: 1. 在SQL2K8备份Logshipping数据库 2. 在R2和SQL28上还原数据库(norecovery) 3. 在SQL2K8上配置到R2的日志传
2012-08-13 16:55:42 1175
转载 如何控制用户访问数据库
使用SQL Server Log On trigger: CREATE DATABASE AuditDb GO USE AuditDb GO /* Create AuditTable */ CREATE TABLE ServerLogonHistory (SystemUser VARCHAR(512), DBUser VARCHAR(512), SPID
2012-08-10 17:08:35 1402
转载 查看Buffer Pool使用情况
转自微软技术支持论坛:“我的SQL Server buffer pool很大,有办法知道是哪些对象吃掉我的buffer Pool内存么?比方说,能否知道是哪个数据库,哪个表,哪个index占用了buffer Pool么?”针对这个问题可以使用(DMV) sys.dm_os_buffer_descriptors。这个DMV非常强大。根据SQL Server 联机丛书,这个视图的作用是 “返回
2012-08-10 15:55:56 2320
原创 删除整张表但是空间没有减少
首先看一个例子: --创建测试表CREATE TABLE testfreespace( column1 INT,column2 CHAR(20),column3 VARCHAR(8000)) --插入数据DECLARE @count INT;SET @count = 0;WHILE @count 3000BEGINSELECT@count
2012-08-10 14:55:24 7298
原创 删除变长列字段后使用DBCC CLEANTABLE回收空间
SQL Server在删除变长列或者减小变长列的长度后,表的大小不会响应自动减小,除非DBA重建索引或者reorganized索引。变长列包括varchar,nvarchar, varchar(max), nvarchar(max), varbinary, varbinary(max), text, ntext,image, sql_variant,和xml。 SQL Server提供
2012-08-10 14:26:05 1433
转载 SQL Server升级安全组SID(安全标识符)检查规则失败
今天在论坛看到有用户出现Security Group upgrade rule失败 错误:rule "Security Group SID(Security Identifier)" failed。发生这个错误的原因是SQL Server创建的Windows本地组SID信息与注册表中的SID不匹配,需要用 WHOAMI /GROUPS查出正确的SID然后替换注册表中的错误SID,问题可以解决。
2012-08-10 10:42:37 4186
原创 查询Blocking脚本
SELECT SPID=p.spid, DBName = convert(CHAR(20),d.name), ProgramName = program_name, LoginName = convert(CHAR(20),l.name), HostName = convert(CHAR(20),host
2012-08-09 21:38:31 1573
原创 灾难:正式数据库和测试测试数据库在一台服务器
曾经看到很多人喜欢将测试数据库和正式数据库放到一台服务器上,认为这样可以节省资源。虽然正式和测试分成两个实例配置,安全性上不会有问题,但是性能和维护上会有很多问题。 1. 维护:一般来说测试服务器不需要什么高可用性,测试需要停机就可以停机,不需要跟用户去做沟通。但是对于正式服务器都是有业务在跑的,而且有SLA的限制,不能说停就停。所以放到一起,测试服务器就失去了灵活性。 2.性能:
2012-08-09 13:25:42 3300
原创 使用sp_cycle_errorlog循环SQL Server错误日志
由于于高可用的数据库服务器可能很少停机,SQLServer的日志文件增长会非常大。这样对于DBA使用错误日志查找信息就会比较困难,而且日志大了写入以后性能也会受到影响。 我们通常认为SQLServer启动的时候才会创建错误日志,所以需要停机才能重新创建日志文件,而这样的维护对于高可用性的数据库是不可想象的。 其实完全可以不通过重启服务就可以实现日志的循环。 微软提供了一个存储过程
2012-08-08 15:34:16 3427 3
原创 使用Profiler Blocked Process Report & Alert 监控数据库Blocking
SQL Server Profiler中提供了一个Blocked Process Report 事件,这个事件可以记录阻塞超过指定的时间的任务,使用这个事件我们可以记录数据库的阻塞信息。 下面我们来看一下如何使用Blocked ProcessReport: 使用Blocked Process Report需要配置阈值和报告生成频率,使用sp_configure 命令配置 block
2012-08-08 13:32:03 1983 1
原创 数据库修复系列Part4:重建数据库日志文件
我们可能会遇到日志文件损坏或者被不小心删除的问题,导致数据库无法访问。在没有备份的情况下,可以用重建日志文件恢复数据库,但是可能会有数据丢失。 另外本篇文件还通过举例证明了日志文件的重要性(许多人说日志文件是可以删除的,这个是完全错误的)。 1. select * from Test(有两条记录1,2)查询结果:idTest-----------12 2.
2012-08-07 15:47:27 2963
The Guru's Guide to SQL Server Architecture and Internals.chm
2009-10-13
Sqlserver性能调整
2009-09-27
使用CPU计数器监视SQL Server性能的
2009-09-27
inside-microsoft-r-sql-server-tm-2005-the-storage-engine
2009-09-27
SQL SERVER 2005
2009-09-27
SQL+Server+2005技术内幕-存储引擎1-5章.pdf
2009-09-24
Microsoft Press - Inside Microsoft SQL Server 2005 Query Tuning and Optimization (Sep 2007).chm
2009-09-24
Inside Microsoft SQL Server 2005: T-SQL Programming
2009-09-24
SQL.Server.2005.Administration
2009-05-25
TSQL Query Tuning
2009-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人