随笔分类 - mssql
摘要: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] = ..
阅读全文
摘要:DROP TABLE test1GODROP TABLE test2GOCREATE TABLE test1 (col1 INT, col2 INT)GOCREATE TABLE test2 (col3 INT, col4 INT)GOINSERT INTO test1 VALUES(1,1)INSERT INTO test1 VALUES(2,2)INSERT INTO test1 VALUES(3,3)INSERT INTO test1 VALUES(4,4)INSERT INTO test1 VALUES(5,5)INSERT INTO test2 VALUES(1,1)INSERT I
阅读全文
摘要:原表无压缩原行压缩原页压缩分区表页压缩分区表行压缩分区视图页压缩分区视图行压缩1802883758224955595258479789328701841987178831834380058689384478865810580508540824377594846098449351906682178590801558239853783198132875979397933681488631785985968505810285907816179288910791686528319794888569830486887789786978888000981778241887581048006...
阅读全文
摘要:简介 数据库快照,正如其名称所示那样,是数据库在某一时间点的视图。是SQL Server在2005之后的版本引入的特性。快照的应用场景比较多,但快照设计最开始的目的是为了报表服务。比如我需要出2011的资产负债表,这需要 数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点。快照还可以和镜像结合来达到读写分离的目的。下面我们来看什么是快照。什么是快照 数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只读的数据库。利用快照,可以提供如下好处: 提供了一个静态的视图来为报表提供服务 可以利用数据库快照来恢复数据库,相比备份恢复来说
阅读全文
摘要:创建分区表定义了分区函数(逻辑结构)和分区架构(物理结构)后,既可以创建分区表来利用它们。分区表定义应使用的分区架构,而分区架构又定义其使用的分区函数。要将这三者结合起来,必须指定应用于分区函数的列 。范围分区始终只映射到表中的一列。CREATETABLE 语法如下:CREATETABLE[ database_name . [ schema_name ] . | schema_name . ] table_name( { <column_definition>|<computed_column_definition> }[ <table_constraint>
阅读全文
摘要:--=========================================-- 转换为分区表--=========================================-- 1. 创建分区函数-- a. 适用于存储历史存档记录的分区表的分区函数DECLARE @dt datetimeSET @dt = '20020101'CREATE PARTITION FUNCTION PF_HistoryArchive(datetime)AS RANGE RIGHTFOR VALUES(@dt,DATEADD(Year, 1, @dt))-- b. 适用于存储历史记录
阅读全文
摘要:--所有请求情况:SELECT s.session_id , s.status , DB_NAME(r.database_id) AS database_name , s.login_name , s.login_time , s.host_name , c.client_net_address , c.client_tcp_port , s.program_name , r.cpu_time , r.reads , r.writes , c.num_reads , c.num_writes , s.client_interface_name , s.last_request_start_ti
阅读全文
摘要:SELECT OBJECT_NAME(object_id, database_id) 存储过程名 , d.cached_time 编译时间 , d.last_execution_time 最近一次执行时间ms , d.total_elapsed_time / 1000 总花费时间ms , d.total_elapsed_time / d.execution_count * 1000 AS 平均执行时间ms , d.last_elapsed_time 最近一次执行花费时间ms , d.execution_count 执行次数FROM sys.dm_exec_procedure_stats AS
阅读全文
摘要:--推荐使用ACTION1,因为它支持在线操作,重建索引期间支持其他操作DECLARE @ACTION1 VARCHAR(MAX)DECLARE @ACTION2 VARCHAR(MAX)DECLARE pcurr CURSORFOR SELECT --objects.name , --indexes.name AS indexid , --avg_fragmentation_in_percent AS frag , --partition_stats.row_count , 'ALTER INDEX ' + indexes.name + ' ON ' + ob
阅读全文
摘要:SELECT databases.name , objects.name , indexes.name , 读写比例 = CAST(( range_scan_count + singleton_lookup_count ) AS DECIMAL(18, 2)) / CASE WHEN CAST(( leaf_insert_count + leaf_update_count + leaf_delete_count + nonleaf_insert_count + nonleaf_update_count + nonleaf_delete_count ) AS DECIMAL(18, 2)) =
阅读全文
摘要:SELECT objects.name , indexes.name AS indexid , avg_fragmentation_in_percent AS frag , partition_stats.row_count, 'ALTER INDEX '+indexes.name+' ON '+objects.name+' REBUILD WITH (ONLINE = ON )'FROM sys.dm_db_index_physical_stats(7, NULL, NULL, NULL, 'LIMITED') stats LE
阅读全文
摘要:和索引重建最相关的是填充因子。当创建一个新索引,或重建一个存在的索引时,你可以指定一个填充因子,它是在索引创建时索引里的数据页被填充的数量。填充因子设置为100意味着每个索引页100%填满,50%意味着每个索引页50%填满。 如果你创建一个填充因子为100的聚集索引(在一个非单调递增的列上),那意味着每当一个记录被插入(或修改)时,页拆分都会发生,因为在现存的页上没有这些数据的空间。很多的页拆分会降低sqlserver的性能。 举个例子:假定你刚刚用缺省的填充因子新创建了一个索引。当sqlserver创建它时,它把索引放在相邻的物理页面上,因为数据能够顺序的读所以这样会有最优的i/o访问。..
阅读全文
摘要:服务器等待的原因SELECT TOP 10[Wait type] = wait_type,[Wait time (s)] = wait_time_ms / 1000,[% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 / SUM(wait_time_ms) OVER())FROM sys.dm_os_wait_statsWHERE wait_type NOT LIKE '%SLEEP%'ORDER BY wait_time_ms DESC;读和写SELECT TOP 10 [Total Reads] = SUM(t
阅读全文
摘要:SELECT objects.name , databases.name , indexes.name , user_seeks , user_scans , user_lookups , partition_stats.row_countFROM sys.dm_db_index_usage_stats stats LEFT JOIN sys.objects objects ON stats.object_id = objects.object_id LEFT JOIN sys.databases databases ON databases.database_id = stats.datab
阅读全文
摘要:SQLSERVER 2008 R2 SP1 64位,链接服务器为32位的SQLSERVER 2000 SP4,链接服务器名称为LINK_39 一般来说,我们想到加了distinct肯定慢的,但是是不是所有情况都是这样呢,是不是SQLSERVER的智者千虑必有一失?另外特别强调,在另一部SQLSERVER 2000 SP4服务器 就不会出现这种情况,加DISTINCT是正常的稍慢(数据量不太大),数据库索引正常仔细看以下两个语句,第一个加了DISTINCT,第二个不加,UPDATE aSET flag = 1FROM LINK_39.test_01.dbo.NSB_test AS a JOIN
阅读全文
摘要:CREATE TABLE #t1 ( id INT IDENTITY(1, 1) NOT NULL , BH INT )INSERT INTO #t1 SELECT 492417420 SELECT *FROM #t1 DROP TABLE #t1 --更新一条数据 ,实际上更新影响0行 --4秒 UPDATE test.[sgoa_data].[dbo].[nsb]SET flag = 1 FROM test.[sgoa_data].[dbo].[nsb] AS a JOIN (SELECT B.bh FROM test.[sgoa_data].[dbo].[nsb] AS B , ...
阅读全文
摘要:/*链接服务器"LINK_39"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。"。消息 16955,级别 16,状态 2,第 1 行未能创建可接受的游标。*/在目标标表创建聚集索引
阅读全文
摘要:--如果"allow updates"选项被设置为"1",那么你在使用语句:EXEC sp_configure 'show advanced options', 1 ;GORECONFIGURE ; --没有加上WITH OVERRIDE,就会出现提示的错误GO--所以,如果你要解决问题,有两个方法:sp_configure 'allow updates', 0 ;--设置为0GORECONFIGURE WITH OVERRIDE ;GO--或者在你运行下面个代码的时候:EXEC sp_configure 'sho
阅读全文
摘要:兼容级别设置为 80兼容级别设置为 90影响的可能性对于 FROM 子句中的锁提示,WITH 关键字始终是可选的。但在一些例外情况中,仅当用 WITH 关键字指定表提示时,FROM 子句中才支持这些提示。有关详细信息,请参阅FROM (Transact-SQL)。高支持在警告消息中使用外部联接运算符 *= 和 =*。不支持使用这两个运算符;应使用 OUTER JOIN 关键字。高在将 ORDER BY 列表中的列引用绑定到在 SELECT 列表中定义的列时,将忽略列的多义性,有时还会忽略列前缀。这可以导致以意外顺序返回结果集。例如,包含有一个两部分列 (<table_alias>.
阅读全文
摘要:CDC 实现数据同步,增量更新在Sqlserver2008上利用CDC实现了数据更新的跟踪,比以往的利用时间戳,触发器实现更加方便快捷.参考资料:http://www.mssqltips.com/tip.asp?tip=1755http://blog.csdn.net/ldslove/archive/2010/05/20/5612248.aspx实现步骤如下:1.配置cdc-- 开启cdcUSE db1 GOEXEC sys.sp_cdc_enable_db--验证--0 :未开启cdc 1:开启cdcSELECT is_cdc_enabled FROM sys.databases WHERE
阅读全文