随笔分类 - mssql
摘要:众所周知SqlServerExpress2005 属于简装版,安装程序五六十兆,在客户的服务器上部署时很畅快。但该数据库无Agent这样对我们进行定时备份保护数据安全带来了麻烦。为了定时备Express2005数据库,可以采取以下方案: 1.编写WindowsService,在服务内调用备份数据库方法。 2.使用Windows自带的计划任务。(推荐使用)。 下面就由我来介绍一下如何用计划任务实现数据库备份的,操作步骤如下: 1. 首先建立一个windows任务计划,打开任务计划向导,选择指定的的exe文件,该文件名为SQLCMD.EXE,位于x:\Program Files\Micro...
阅读全文
摘要:SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。示例一:当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数列。这种时候我们可以用以下方案来解决。SET IDENTITY_INSERT [TABLE] [ON|OFF]允许将显式值插入表的标识列中,当设置为ON时,这时可能在INSERT操作时手工指定插入到标识列中的编号,同时必须在操作完成后,将IDENTITY_INSERT还原成OFF,否则下次插入的时候必须指定编号,那不然就无法完成INSERT操作。示例二:当表中的记录被全部删除,但此时标识列的值越来越大
阅读全文
摘要:isnumeric,isdate,patindex,newid,collate,sp_executesql,checksum遂记下,以备日后查询。不敢独享,与君共之。有用且看,无用略过。1> isnumeric( expression )-- 返回值 1 | 0,判断是否是数字类型。数值类型包括(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)示例:select * from tablenamewhere isnumeric(columnname)<> 1;go以上示例使用 isn
阅读全文
摘要:master库对于SQLServer来说,是很重要的系统数据库,保存着所有Sqlserver的用户信息、数据库信息等,当数据库崩溃时,master数据库的恢复成功与否起着重要的作用。这就跟Oracle的System表空间一样,非常的重要。备份数据前期准备:(1)在备用机准备好和生产机器一样的sql2005数据库环境(注意数据库版本要一致) (2)准备好备份恢复所需的数据,将生产机bak文件全部copy到备用机d:\dbbak文件夹下恢复步骤:1,停止MSSQLSERVER服务;2,cmd下,输入以下代码,进入单用户模式sc start MSSQLServer -m –f -c3,打开Manag
阅读全文
摘要:MSSQL 分页方式说明:目前我所知的有以下几种方式临时表表变量in, not inSET ROWCOUNTCTEid >, id <优缺点分析: 性能最低, 可操作性差第一种方式和第二种方实际上是比较类似的.优点: 排序方式比较随意缺点:第一种方式 有大量的 IO 开销.第二种方式则会开销内存, 但当表数据量比较大的时候性能会直线下降.所以这两种方式都不适合做大数据量的分页.第三种方式: 性能次之, 可操作较差优点: 排序方式比较随意缺点: 资源开销比较大, 数据库会承担不小的运算压力, 所以也不适合做大表分页.第四种方式: 性能平均, 可操作性尚可优点: 排序相对比较随意, 各
阅读全文
摘要:有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 SQL 语句的分页 SQL 吧。方法1:适用于 SQL Server 2000/2005SELECTTOP页大小*FROMtable1WHEREidNOTIN(SELECTTOP页大小*(页数-1) idFROMtable1ORDERBYid)ORDERBYid方法2:适用于 SQL Server 2000/2005SELECTTOP页大小*FROMtable1WHEREid>(SELECTISN
阅读全文
摘要:SELECTOBJECT_NAME(i.object_id)ASTableName,data_pages*8ASDataSize--这里返回的是数据页个数,1页是8K,所以乘以8FROMsys.indexesasiJOINsys.partitionsaspONp.object_id=i.object_idandp.index_id=i.index_idJOINsys.allocation_unitsasaONa.container_id=p.partition_idwherei.object_id=OBJECT_ID('tablename')
阅读全文
摘要:主数据库代码:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->USE[master]--创建数据库主密钥。IFEXISTS(SELECT*FROMsys.databasesWHEREname='master'andis_master_key_encrypted_by_server=1)--dropmasterkey;OPENMASTERKEYDECRYPTIONBYPASSWORD='123456789'
阅读全文
摘要:准备工作createtabledbo.ta(idvarchar(10),cchar(10))goinsertdbo.taselectROW_NUMBER()over(orderbyc1.name)id,'x'fromsys.columnsc1crossjoinsys.columnsc2gocreateindexindex1ondbo.ta(id)godbccfreeproccachego接下来要用select *from ta where id='1'的方式执行两次,看看是否重用了存储过程dbccfreeproccachegoDECLARE@valuevarch
阅读全文
摘要:Instant Initialization是NTFS文件系统的特性,可以让文件快速的初始化,显著提高SQLSERVER的数据文件扩张和RESTORE的速度。SQL Server内部无法控制Instant Initialization特性,如果想使用,需要授权SQL Server启动账户Perform Volume Maintenance Tasks的权限(本地管理员默认拥有此权限)。如果SQL Server服务处于运行状态,则需要重启后才能生效。我们可以通过trace flag 3004, 3605查看SQLSERVER是否使用了这个特性。代码如下:dbcctraceon(3004,3605
阅读全文
摘要:An extended stored procedure (xp) is a dynamic link library that runs directly in the address space of SQL Server and is programmed using the SQL Server Open Data Services API. You can run extended stored procedures from the Query Analyzer, for example, just as you would normal stored procedures. Ex
阅读全文
摘要:SCOPE_IDENTITY、IDENT_CURRENT和@@IDENTITY是相似的函数,因为它们都返回插入到标识列中的值。IDENT_CURRENT不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT返回为任何会话和作用域中的特定表所生成的值。有关详细信息,请参阅IDENT_CURRENT(Transact-SQL)。SCOPE_IDENTITY和@@IDENTITY返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY只返回插入到当前作用域中的值;@@IDENTITY不受限于特定的作用域。例如,有两个表T1和T2,并且在T1上定义了INSER
阅读全文
摘要:SQLServer2000提供了一个读取数据页结构的命令DBCC Page。该命令为非文档化的命令,具体如下:DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])具体参数描述如下:dbid 包含页面的数据库IDdbname 包含页面的数据库的名称filenum 包含页面的文件编号pagenum 文件内的页面printopt 可选的输出选项;选用其中一个值: 0:默认值,输出缓冲区的标题和页面标题 1:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表 2:输出缓冲区的标...
阅读全文
摘要:sys.fn_dblog返回当前数据库日志的活动部分的内容usedb1goifexists(select1fromsys.tableswherename='t')droptabletgocreatetablet(colint)godbcctraceon(3505,-1)---disable automatic checkpoint behaviorhttp://support.microsoft.com/kb/815436/en-usgocheckpointgoselect[CurrentLSN],[PreviousLSN],[PreviousPageLSN],Partitio
阅读全文
摘要:DROPTABLET_TESTCREATETABLET_TEST(IDINTIDENTITYPRIMARYKEY,STATUSBIT)INSERTINTOT_TESTSELECT0GO100000INSERTINTOT_TESTSELECT1CREATEINDEXIXF_T_TEST_STATUSONT_TEST(STATUS)WHERESTATUS=1UPDATESTATISTICST_TESTwithfullscanDBCCFREEPROCCACHE--正常查询SELECT*FROMT_TESTWHERESTATUS=1--参数化查询SP_EXECUTESQLN'SELECT*FR
阅读全文
摘要:1 找出效率低的语句SELECTTOP10qs.total_worker_time,qs.total_logical_reads,qs.last_logical_writes,qs.plan_handle,qs.execution_count,(SELECTSUBSTRING(text,qs.statement_start_offset/2+1,(CASEWHENqs.statement_end_offset=-1THENLEN(CONVERT(nvarchar(max),text))*2ELSEqs.statement_end_offsetEND-qs.statement_start_off
阅读全文
摘要:SELECT CASE df.database_id WHEN DB_ID('distribution') THEN 'distDB' WHEN DB_ID('tempdb') THEN 'tempdb' --add other needed database ELSE 'otherDBs' END AS dbName , CASE df.type WHEN 0 THEN 'datafile' WHEN 1 THEN 'logfile' ELSE 'otherfile'
阅读全文
摘要:CREATETRIGGER[ddl_trig_database]ONALLSERVERFORDROP_DATABASEASDECLARE@dbVARCHAR(209)SET@db=(SELECT'DatabaseDropped:'+EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','VARCHAR(229)'))RAISERROR(@db,16,1)WITHLOG
阅读全文
摘要:CREATETABLETEST(c1INTIDENTITY,c2CHAR(4000)DEFAULT'a');GOINSERTINTOTESTDEFAULTVALUES;INSERTINTOTESTDEFAULTVALUES;INSERTINTOTESTDEFAULTVALUES;GOcreateindexindex1ontest(c1)SELECTsys.fn_PhysLocFormatter(%%physloc%%)AS[PhysicalRID],*FROMTEST;GOSELECTsys.fn_PhysLocFormatter(%%physloc%%)AS[Physical
阅读全文
摘要:一、Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一个Tempdb。很明显,这样的设计不是很好。当多个应用程序的数据库部署在同一台服务器上的时候,应用程序共享tempdb,如果开发人员不注意对Tempdb的使用就会造成这些数据库相互影响从而影响应用程序。二 、Tempdb的特性1、tempdb中的任何数据在系统重新启动之后都不会持久存在。因为实际上每次SQLServer启动的时候..
阅读全文