
sql server
文章平均质量分 74
wacthamu
这个作者很懒,什么都没留下…
展开
-
SQLSERVER角色权限
服务器角色:按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语句.该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计.2.dbcreator:这个角色可以创建,更改,删除和还原任何数据库.不仅适合助理DBA角转载 2016-06-24 16:16:54 · 1931 阅读 · 0 评论 -
SQL SERVER 插入大批量数据有无索引的效率对比
这两天在公司做了个测试,测试在插入大批量数据时先建立索引的效率高还是后建立索引的效率高。测试结果跟之前很多人一概而论的肯定是先插入数据的效率搞结果有点出入:当只有一个聚集索引的时候,先建立聚集索引再插入数据的效率更高,有非聚集索引的时候先插入数据再建索引的效率高。 /** 说明1. 测试SQL SERVER 插入大批量数据的效率对比,原创 2013-08-24 17:19:42 · 5742 阅读 · 0 评论 -
SQL Server存储结构 一个字节造成的巨大性能差异
首先我们创建两张表,一张表的列长度是4039字节,另一张表的长度是4040字节,他们就只有一个字节的差距,比如以下创建表的SQL:转载 2013-07-21 15:20:04 · 567 阅读 · 0 评论 -
sysprocesses wait type
LOCK waittypesThe following table lists the LOCK waittypes in the master.dbo.sysprocesses system table in SQL Server 2000 and SQL Server 2005.Collapse this tableExpand this tableLast转载 2013-08-18 13:45:09 · 3756 阅读 · 0 评论 -
SQLServer事务的隔离级别
数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况。更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。脏读(Dirty Reads) 一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时转载 2013-08-07 22:20:19 · 567 阅读 · 0 评论 -
sql server 彻底理解锁机制(1)
在SQL Server中,每一个查询都会找到最短路径实现自己的目标。如果数据库只接受一个连接一次只执行一个查询。那么查询当然是要多快好省的完成工作。但对于大多数数据库来说是需要同时处理多个查询的。这些查询并不会像绅士那样排队等待执行,而是会找最短的路径执行。因此,就像十字路口需要一个红绿灯那样,SQL Server也需要一个红绿灯来告诉查询:什么时候走,什么时候不可以走。这个红绿灯就是锁。转载 2013-08-07 16:58:48 · 810 阅读 · 0 评论 -
锁类型与锁机制 (3)
1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。 2. NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。 3. PAGLOCK:指定添加页锁(否则通常可能添加表锁)。 4. READCOMMITTED用与运行在提交读隔离级别的事务相同转载 2013-08-07 17:40:37 · 821 阅读 · 0 评论 -
SQL server锁的机制 (2)
SQL server的所有活动都会产生锁。锁定的单元越小,就越能越能提高并发处理能力,但是管理锁的开销越大。如何找到平衡点,使并发性和性能都可接受是SQL Server的难点。SQL Server有如下几种琐:1、 共享锁用于只读操作(SELECT),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。2、 更新锁更新锁是一种意图锁,当一个事物已经请求共享琐后转载 2013-08-07 17:39:01 · 576 阅读 · 0 评论 -
怎样建高效索引
1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合转载 2013-07-27 15:28:10 · 1693 阅读 · 0 评论 -
SQL Server快速导入数据 各种表的速度比较
如果需要向SQL Server批量导入数据,根据导入的选项和表中的索引设置,数据导入的时间可能会在不同情况下相差甚远。如何能够把批量导入的过程尽量少花时间呢?在这里我们将会介绍几种不同的批量导入数据的方法、各种方法相应的实例及其所需的时间长短。在我们的测试中我们采取了六种不同的数据导入方法:1、表含有一个聚集索引(clustered index)和两个非聚集索引(non-cluster转载 2013-07-24 22:31:16 · 847 阅读 · 0 评论 -
SQL Server 2008 索引使用
微软MVP及畅销书《Hitchhiker's Guide SQL Server》的作者Bill Vaughn简要给出了SQL Server 2008的索引使用技巧。该主题基于Kimberly Tripp和Paul Randall(这两位是SQL Server高可用性和性能方面的专家)的建议。下面是主要的建议:·页(page)密度优化行大小:SQL Server 2005(及后续版本)支转载 2013-07-31 19:33:04 · 802 阅读 · 0 评论 -
BCP命令
bcp实用工具在Microsoft SQL Server 2000实例和数据文件之间以用户指定的格式复制数据。语法bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f转载 2013-07-21 21:49:02 · 814 阅读 · 0 评论 -
SQL SERVER 究竟什么时候写日志
昨天看到网上有一个关于SQL SERVER 课件,便随手下载了下来看看主要讲了些什么内容,于是看到了下面两个PPT页面:由于第一张PPT上的内容不太准确(日志文件中没有“日志页”的概念,只有VLF的概念,可能是我们对“数据页”的概念太深刻了,因此弄了以“日志页”的概念出来,而PPT中说先更新高速缓冲区中的数据页,然后将事务日志写入到“日志页”,很容易让人理解成先更改高速缓冲区,转载 2013-07-21 15:42:46 · 1220 阅读 · 0 评论 -
统计信息对于查询路径选择的影响
简介 SQL Server查询分析器是基于开销的。通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引。而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息。 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令:转载 2013-06-29 16:48:19 · 725 阅读 · 0 评论 -
tempdb作用
简介: tempdb是SQL Server的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一个Tempdb。很明显,这样的设计不是很好。当多个应用程序的数据库部署在同一台服务器上的时候,应用程序共享tempdb,如果开发人转载 2013-06-28 17:12:02 · 1328 阅读 · 0 评论 -
sql server系统视图
sql server系统表详细说明sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序sysconfigures主数据库 配置选项 syscurconfigs主数据库当前配置选项 sysdatabases 主数据库服务器中的数据库 syslanguages 主数据库语言 syslo转载 2013-06-28 17:45:40 · 839 阅读 · 0 评论 -
查看数据库中没有使用的索引
SELECT tb_name=object_name(a.object_id),idx_name=b.name,last_user_update,c.colid,c.keyno,col_name=d.name--INTO #TEMP06FROM sys.dm_db_index_usage_stats a LEFT JOIN sys.indexes b ON a.object_id=b.object转载 2013-05-31 21:45:53 · 838 阅读 · 0 评论 -
WAIT TYPE:PAGEIOLATCH_SH
PAGEIOLATCH_SH: Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Shared mode. PAGEIOLATCH_SH waits is very brief as they are only held on a page转载 2013-08-16 18:23:33 · 2052 阅读 · 0 评论 -
SQL Server 2008内存及I/O性能监控
Window 32位系统环境 用户模式和内核模式(user mode& kernel mode) 为了防止用户程序访问并篡改操作系统的关键部分,Windows使用了2种处理器存取模式:用户模式和内核模式。顾名思义,内核模式是给操作系统核心代码和基本驱动用的,用户模式给用户应用程序。在内核模式下程序可以访问所有的内存和硬件,并使用所有的处理器指令。操作系统程序比用户程序有更高的权限,使转载 2013-08-16 21:54:31 · 865 阅读 · 0 评论 -
SQL Server索引的维护 - 索引碎片、填充因子
实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的。 对于非常小的表(比64KB小得多),一个区中的页面可能属于多余一个的索引或表---这被称为混合区。如果数据库中有太多的小表,混合区帮助SQL Server节约磁盘空间。 随着表(或索引)增长并且请求转载 2016-05-27 17:26:55 · 1545 阅读 · 0 评论 -
Why SHRINKFILE is a very bad thing, and what to do about it.
The ProblemShrinking a database file (either using SSMS or T-SQL code) should be avoided if at all possible. In an ideal situation, it is much better to size the file appropriately in the first plac转载 2016-05-25 10:44:16 · 542 阅读 · 0 评论 -
PAGELATCH_x和PAGEIOLATCH_x介绍
在分析SQL server 性能的时候你可能经常看到 PAGELATCH和PAGEIOLATCH。比方说执行如下TSQL语句Select * from sys.dm_os_wait_stats它输出结果里面就有Latch的有关信息,如下图所示:1.1什么是LATCH呢?Latch是SQL server内部用来同步资源访问的一个数据结构,和操作系统的critica转载 2016-03-08 15:06:25 · 648 阅读 · 0 评论 -
数据库置疑(可疑状态)的修复方法
首先要强调的是最好要在此数据库断开所有连接,没有未被提交的事务的状态下关掉数据库,否则可能会引起日志文件无法重做。有如下几种可行的方案:1.一般情况ALTER DATABASE DatabaseName SET EMERGENCYALTER DATABASE DatabaseName SET SINGLE_USERDBCC CheckDB (Database原创 2016-01-13 13:53:41 · 38682 阅读 · 1 评论 -
SQL Server 索引中include
开文之前首先要讲讲几个概念 【覆盖查询】 当索引包含查询引用的所有列时,它通常称为“覆盖查询”。 【索引覆盖】 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会发生Bookup Lookup,因为找到索引项,就已经找到所需的数据了,没有必要再到数据行去找了。这种情况,叫做索引覆盖; 【复合索引】转载 2015-09-16 17:41:26 · 1226 阅读 · 0 评论 -
SQLServer excel和txt的导入导出
exec sp_configure 'show advanced options',1 --启用高级配置选项设置 reconfigure; --reconfigure with override; --reconfigure不行则都用这个 exec sp_configure 'Ad Hoc Distributed Queries',1 --启用 OPENROWSET,Ope转载 2015-08-06 16:27:37 · 914 阅读 · 0 评论 -
(总结) SQL Server Bulk Insert 批量数据导入
SQL Server的Bulk Insert语句可以将本地或远程的数据文件批量导入到数据库中,速度非常的快。远程文件必须共享才行,文件路径须使用通用约定(UNC)名称,即"\\服务器名或IP\共享名\路径\文件名"的形式。 * 1. 由于Bulk Insert通常配合格式化文件批量导入数据更方便,所以这里先介绍bcp工具导出格式化文件的方法。bcp是SQL Server提供转载 2015-07-15 17:41:08 · 847 阅读 · 0 评论 -
sql server 系统过程
一些用在SQL 2000的企业管理GUI中,并且不打算用于其他的流程。微软已预计将其中的一些存储过程从未来的SQL Server版本中删除(或已经删除了)。虽然这些存储过程可能很有用并为你节省了很多时间,但是他们可以在任何时候改变他们的函数或简单的删除掉。 下面的图表显示了当许多存储过程从一个Microsoft SQL Server版本移入另一个版本时,引入了新的存储过程,而原来的一些则转载 2015-03-04 14:11:17 · 761 阅读 · 0 评论 -
SQL SERVER SQLOS的任务调度
最近,数据库系统经常出现“ 消息[298] SQLServer Error: 10054, TCP Provider: 远程主机强迫关闭了一个现有的连接。 [SQLSTATE 08S01]”一开始很迷惑,不知道原因,后来查询资料,发现 max worker thread 设置问题,由于前期 max worker thread 设置为255,连接过小,修改成0。 SQL SERVER S转载 2014-12-02 17:26:59 · 836 阅读 · 0 评论 -
sp_readerrorlog
通过查看SQL error Log, 可以确保操作过程都成功完成(比如说, 备份, 还原操作, 批命令, 或者其他的脚本和过程). 特别是如果一个SQL server实例被停止或重启的时候,查看SQL error log对于检测任何当前的或者潜在的问题领域非常有用, 领域包括自动恢复消息(automatic recovery messages ), 内核消息, 或者其他的服务器等级的错误消息.转载 2014-04-24 21:21:22 · 3182 阅读 · 0 评论 -
监视tempdb 使用情况
本主题提供了一些步骤和建议,可帮助您诊断和解决 tempdb 数据库中磁盘空间不足导致的问题。如果 tempdb 中的磁盘空间用尽,可能会导致 SQL Server 生产环境受到严重破坏,并且可能会阻止正在运行的应用程序完成操作。tempdb 空间要求tempdb 系统数据库是可供连接到 SQL Server 实例的所有用户使用的全局资源。tempd转载 2013-10-22 16:03:15 · 2622 阅读 · 0 评论 -
sql server 压缩日志或者数据文件
第一步: backup log database_name with no_log或者 backup log database_name with truncate_onlyno_log和truncate_only是在这里是同义的,随便执行哪一句都可以。 第二步: 1.收缩特定数据库的所有数据和日志文件,执行: dbcc shrinkdatabase (database_n转载 2013-10-17 15:33:21 · 633 阅读 · 0 评论 -
SQL SERVER中的逻辑读,预读和物理读
SQL SERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVER对于页的读取是原子性,要么读完一页,要么完全不读,不会有中间状态。而页之间的数据组织结构为B树(请参考我之前的博文).所以SQL SERVER对于逻辑读,预读,和物理读的单位是页.转载 2013-09-18 15:03:09 · 596 阅读 · 0 评论 -
T-SQL查询高级—SQL Server索引中的碎片和填充因子
写在前面:本篇文章需要你对索引和SQL中数据的存储方式有一定了解.标题中高级两个字仅仅是因为本篇文章需要我的T-SQL进阶系列文章的一些内容作为基础.简介 在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构(表上没有聚集索引则为堆结构,不在本文讨论之列)如下图: 在聚集索引B树中,只有叶转载 2013-09-17 22:20:42 · 838 阅读 · 0 评论 -
从waittype看sql server性能
通过DMV查看当时SQL SERVER所有任务的状态(sleeping、runnable或running)2005、2008提供了以下三个视图工详细查询:DMV用处Sys.dm_exec_requests返回有关在SQL Server中执行的每个请求的信息,包括当前的等待状态Sys.dm_exec_sessio转载 2013-08-16 20:50:52 · 1692 阅读 · 0 评论 -
查看等待信息及内存
--自己看SELECT wt.session_id, ot.task_state, wt.wait_type, wt.wait_duration_ms, wt.blocking_session_id, wt.resource_description, es.[host_name], es.[program_name]FROM sys.dm_os_waiting_tasks wt INNER JOI原创 2013-08-16 22:01:33 · 607 阅读 · 0 评论 -
缺失索引
当大家发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能,但是面对一个复杂的SQL语句,找到一个优化的索引组合对人脑来讲,真的不是一件很简单的事。好在SQLSERVER提供了两种“自动”功能,给你建议,该怎么调整索引第一种是使用DMV第二种是使用DTA (database engine tuning advisor) 数据库引擎优化顾问这篇文章主要讲第一种转载 2013-05-31 16:56:29 · 1902 阅读 · 0 评论 -
写有效率的SQL查询 (底层原理)
aa转载 2013-05-25 22:42:39 · 1155 阅读 · 0 评论 -
MS SQL Server 表数据更新时间查询
检查数据库表最近一次被INSERT/UPDATE/DELETE的时间来了解各个表的数据写入情况。这里通过一个脚本给每个表加上触发器来记录表数据最后修改时间等信息。执行以下T-SQL语句,将在当前数据库中创建一个日志表 [dbo].[generic_tbmodify_log] ,并自动从 sysobjects 系统表中获得数据库表清单,对除 [dbo].[generic_tbmodify_l转载 2013-05-12 21:18:00 · 4237 阅读 · 1 评论 -
SQL 函数
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值等。下表给出了T-SQL函数的类别和描述。函数类别作用聚合函数 执行的操作是将多个值合并为一个值。例如 COUNT、SUM、MIN和 MAX。配置函数转载 2013-03-13 15:20:02 · 1202 阅读 · 0 评论 -
sql server TRY CATCH
Transact-SQL 代码中的错误可使用 TRY…CATCH 构造处理,此功能类似于C#语言的异常处理功能。TRY…CATCH 构造包括两部分:一个 TRY 块和一个 CATCH 块 1.TRY...CATCH 块不处理导致数据库引擎关闭连接的严重性为 20 或更高的错误。但是,只要连接不关闭,TRY...CATCH 就会处理严重性为 20 或更高的错误。 2.严重性为转载 2013-03-14 11:23:42 · 681 阅读 · 0 评论