摘要: 很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 .......今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下:测试环境:USETEMPDBGOCREATETABLETB(IDINTIDENT...阅读全文
摘要: alter database 置疑数据库 set emergencygoalter database 置疑数据库 set single_user with rollback immediategouse mastergoalter database 置疑数据库 Rebuild Log on(name...阅读全文
摘要: 1.主服务器挂了,备机紧急启动并且开始服务 --备机执行: USE master; ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;2、原来的主服务器恢复,可以继续工作,需要重新设定镜像 --备机执行: USE master;...阅读全文
摘要: 在大多数情况下,人为更新统计信息可以获得更好的性能。这个文章,我们可以来看下如何检测过期的统计信息。在SQL Server 2005以后的版本里,SQL Server使用ColModCtr对统计的主要列对象进行跟踪。但在SQL server 2005或SQL server 2008里没有对应的DMV...阅读全文
摘要: 笔者作为一个菜鸟,没什么好分享的,就把在学习期间的一点小心得拿出来晒晒。学习数据库的时候层突发奇想能不能根据表名直接找出来该表的主键,进而可以进 行排序之类的操作,下面就把自己的具体实现分享给大家吧!1、查询表名(tblstudent为例)的id号select id from sysobjects w...阅读全文
摘要: "五一"时进行了系统重装,在没有卸载SQL Server 2008情况下尝试安装SQL Server 2008r2 ,安装提示成功但提示出现几个错误,发现没有找到SSMS,以及在SQL SERVER配置管理器里的服务也只有可怜的一项,瞬间感觉不妙,没办法只能重新卸载安装,在网上无绪找到了几个介绍卸载...阅读全文
摘要: 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 阅读全文
摘要: 概要锁升级为表锁插入转换很多细粒度的锁 (如行或页锁) 的过程。Microsoft SQL Server 动态确定何时执行锁升级。作出决定之前,SQL Server 将特定的扫描,整个事务,并且用于锁定在系统中作为一个整体的内存由持有的锁的数目只会保留的锁的数量考虑。通常情况下,SQL Server 默认行为导致位置,这会提高性能,或当必须将过多的系统锁定内存减少到更合理水平,只能在这些时间点发生的锁升级。但是,一些应用程序或查询的设计可能会 触发一次时不太理想,并已呈报的表锁可能会阻止其他用户的锁升级。本文讨论如何确定是否锁升级而导致阻塞和如何处理不需要的锁升级。回到顶端|提供反馈更 多信息如何阅读全文
摘要: 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)‘阅读全文
摘要: 最近因為在查一個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...阅读全文
摘要: 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阅读全文
摘要: 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.阅读全文
摘要: --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 阅读全文
摘要: 原文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阅读全文
摘要: 文章导读拼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 几百、上千、甚至上万条数据时,参数化查询将是必然进行阅读全文
摘要: --方法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阅读全文
摘要: ----允许对系统表进行更新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 阅读全文
摘要: SQL Server 2008中的FileStream支持服务器有一个属性,即指定该服务器是怎么支持文件流的/*实际上文件流的出现就是为了解决对大对象的存储中一个矛 盾。对于大对象,第一种方式是存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做。好处是可以统一备份,但实际上 读取效率比较低。大于1MB的文件就会有问题第二种方式是文件存储在文件系统,而数据库中存储了一个路径。这种方式数据库压力减轻了,却很不方便统一备份 和管理。SQL SERVER 2008的文件流其实就是二者的统一。文件还是放在文件系统的,但由数据库进行管理。可以统一备份和还原。FILESTREA阅读全文
摘要: 经常会有需求记录用户表中由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相 关的..阅读全文
摘要: 今天在将一个 SQL Server 2005 数据库附加到 SQL Server 2008 R2 时出现如下的错误:无法升级数据库 ‘SchoolPlatForm1‘,因为它是只读的,或者具有只读文件。请将数据库或文件设为可写,然后重新运行恢复操作。 (Microsoft SQL Server,错误: 3415)查看了数据库文件,他们并没有只读属性,在 SQL Server 2005 中附加都是一切正常的啊。从网上找了几种方式:1.将要附加的文件拷贝到 SQL Server 默认的 Data 目录,此时附加就会成功;(我用之种方式就可能正常附加数据.下面的几种方式没有尝试).(阅读全文
摘要: /********运行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阅读全文
摘要: SELECT referencing_schema_name +‘.‘+ referencing_entity_name AS ReferencedEntityName, referencing_class_desc AS ReferencingEntityDescription FROM sys.dm_sql_referencing_entities (‘dbo.BZLIST‘, ‘OBJECT‘); GO阅读全文
摘要: 用Windows Storage Server 2008做iSCSI存储服务器Windows Storage Server 2008(以下简称WSS2008)是Windows Server 2008系列中的存储服务器版本,是企业级的文件服务器平台,支持多Administrator文件存储相关的优化特性、副本管理,以及iSCSI功能。 简单来说,就是可以在普通的服务器上,安装上WSS2008,可以作为iSCSI存储服务器来说。而在以前,存储服务器的硬件、软件成本都非常的昂贵,有 了WSS2008,构建低成本、易于管理的存储服务器成为可能。本节将介绍WSS2008做iSCSI服务器及其在网络中的应用。阅读全文
摘要: SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。在选择数据库同 步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制。数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像服务器。但缺点是配置复杂,镜像数据库中的数据不可见(在SQL Server Management St阅读全文
摘要: 数据表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阅读全文
摘要: 方法一:使用T-SQL语句实现移动数据库--首先让你的数据库状态变成脱机状态ALTER DATABASE Test SET OFFLINE WITH ROLLBACK IMMEDIATE;--执行这个命令之后,SQL Server立即断开所有的连接并回退它们的事务(此时如果有执行未完的事务就容易让数据库丢失)--所有正在执行事务的用户都会接收到一个连接错误,而 且他们不能再连接数据库。--查看Test数据库是否存在,对对看数据库名字是否正确SELECT name ,physical_name AS CurrentLocation ,state_descFROM sys.master_files-阅读全文
摘要: 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阅读全文
摘要: 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阅读全文
摘要: 问题:在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,并且具有独立账号阅读全文
摘要: --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 周星驰阅读全文
摘要: 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 = 阅读全文
摘要: 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 ( 阅读全文
摘要: 安装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阅读全文
摘要: 内嵌用户定义函数 内嵌用户定义函数是返回 table 的用户定义函数的子集。内嵌函数可用于实现参数化视图的功能。 请看下面的视图: CREATE VIEW vw_CustomerNamesInWA AS SELECT CustomerID, CompanyName FROM Northwind.dbo.Customers WHERE Region = ‘WA‘ 可创建更通用的版本 vw_CustomerNamesInRegion,方法是将 WHERE Region = ‘WA‘ 替换为 WHERE Region = @RegionParameter 并让用户指定阅读全文
摘要: 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)阅读全文
摘要: 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阅读全文
摘要: 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 #阅读全文
摘要: 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阅读全文
摘要: --动态处理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 阅读全文
摘要: 【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阅读全文
摘要: 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>&阅读全文
摘要: 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阅读全文
摘要: 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阅读全文
摘要: --链接服务器"LINK_110"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。--消息 7391,级别 16,状态 2,第 4 行--无法执行该操作,因为链接服务器 "LINK_110" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。阅读全文
摘要: 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阅读全文
摘要: 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...阅读全文
摘要: 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阅读全文
摘要: 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 ...阅读全文
摘要: 如何提高性能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阅读全文
摘要: 講到 SQL Server 2008 效能調校,這可是一門大大的學問,但是若能掌握一些基本的 SQL Server 資料庫運作原理,要能成為 SQL Server 效能調校的專家其實並不困難。我們都知道學習這些原理並不難,看書就會了,難的是如何才能在實務管理工作上真正的融會貫通、靈活運用這些已知的知識,再搭 配一些方便的工具幫你快速取得所要的重要資訊,進而做出效能調校的判斷與改善現有資料庫的效能問題。今天我打算來分享一個分析索引使用量統計的技巧,來改 善資料庫「寫入」效率的問題。一般來說,我們在做資料庫效能調校時,都會想調整「讀取」資料的效能,也就是建立「非叢集索引」來縮短篩選與取得資料的時間阅读全文
摘要: 微軟在 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阅读全文
摘要: 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阅读全文