SQL Server脚本
文章平均质量分 54
KevinLiu
SQL Server MVP
展开
-
根据分区表名查找所在的文件及文件组
SELECT ps.nameAS PSName, dds.destination_idAS PartitionNumber, fg.name AS FileGroupName,fg.name, t.name, f.name as filename FROM (((sys.tablesAS t INNER原创 2012-08-02 21:28:27 · 2085 阅读 · 0 评论 -
查询并自动创建Missing Index
SELECT migs.avg_total_user_cost*(migs.avg_user_impact/ 100.0)*(migs.user_seeks+ migs.user_scans)ASimprovement_measure, 'CREATE INDEX[missing_index_' + CONVERT(varchar, mig.index原创 2012-12-27 10:31:24 · 1568 阅读 · 0 评论 -
查询Index使用状况SQL
SELECT sch.name +'.' + t.nameAS [Table Name], i.name AS[Index Name], i.type_desc, ISNULL(user_updates,0)AS [Total Writes], ISNULL(user_seeks+user_sc原创 2012-12-18 11:49:34 · 1099 阅读 · 0 评论 -
查询SQL Server内存使用状况脚本
SELECT type,--Clerk的类型 sum(virtual_memory_reserved_kb)as vm_Reserved_kb,--保留的内存 sum(virtual_memory_committed_kb)as vm_Committed_kb,--提交的内存 sum(awe_allocated_kb)as awe_Allocated_kb,--开启A原创 2013-02-07 16:15:46 · 2094 阅读 · 0 评论 -
使用SQL语句获得服务器名称和IP 地址
query sql server server name and ip,查询SQL Server服务器名称和IP地址原创 2013-07-09 10:11:52 · 3331 阅读 · 1 评论 -
如何查看当前Open的Cursor
遇到错误:A cursor with thename ' ' already exists,想要看是什么代码导致的。找到下面几种方法. --测试声明Cursor并且打开DECLARE vend_cursor CURSOR GLOBAL FOR SELECT * FROMPurchasing.VendorOPEN GLOBALvend_cursor原创 2013-12-30 21:20:40 · 1417 阅读 · 0 评论 -
查询SQL Server Index上次Rebuild时间
朋友有一个Rebuild Index的Job执行一般停掉了,问我是否可以查看哪些Index已经被Rebuild过了。本来以为Sys.index或者Sys.objects会存储类似的信息,结果没有找到。 从网上查了一下,SQL Server没有存储类似的信息。但是因为Rebuild Index会自动更新统计信息,而统计信息的更新时间是可以获得的。所以我们可以大致根据统计信息的时间来估计。原创 2013-12-13 15:23:19 · 1651 阅读 · 0 评论 -
查询SQLServer的启动时间
上午在分析索引的使用情况,想看一下数据库什么时候启动的,确保统计的数据没有问题,可以使用下面三种方法查询: SELECT sqlserver_start_timeFROM sys.dm_os_sys_info select crdate from master..sysdatabaseswherename='tempdb' SELECT login_time F原创 2013-12-24 14:19:55 · 2114 阅读 · 0 评论 -
查询当前数据库IO等待状况语句
sys.dm_io_pending_io_requests可以返回当前IO Pending的状态,对于SQL Server 中每个挂起的I/O 请求,返回与其对应的一行,跟sys.dm_io_virtual_file_stats配合可以看到具体是哪个数据库IO出现问题。 select DB_NAME(database_id)as DBNAME, database_id,原创 2012-11-30 09:42:23 · 2604 阅读 · 0 评论 -
替换Cursors和While Loops
一般在处理循环问题的时候,大家都会选择Cursor,因为使用起来非常方便,代码也很好实现,但是使用Cursor肯能会产生性能问题。那么有什么好的替代方法吗?从网上看到的一篇文章很有借鉴意义(ReplacingCursors and While Loops),改写Cursor性能提高了几倍. 所以我们在设计代码的时候可以多考虑考虑是否不用Cursor也可以实现。 源代码和改写后的代码如下原创 2012-10-30 11:40:53 · 1445 阅读 · 0 评论 -
查询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 · 1574 阅读 · 0 评论 -
用邮件发送运行时间久的SQL语句
ALTER proc [dbo].[usp_EmailLongRunningSQL]asbegindeclare@LongRunningQueries AS TABLE( lrqId int IDENTITY(1,1)PRIMARY KEY, spid int NULL, batch_duration bigintNULL, program_name原创 2012-07-24 14:27:49 · 941 阅读 · 0 评论 -
查询数据库中表使用的空间信息。
使用了微软提供的不公开的存储过程sp_MSforeachtable CREATE TABLE #temp( TableName NVARCHAR (128), RowsCnt VARCHAR (11), ReservedSpace VARCHAR(18), DataSpace VARCHAR(18), CombinedIndexSpace原创 2012-07-23 11:47:36 · 999 阅读 · 0 评论 -
一条语句将一个字段数据换转成一个字符串
例如数据 列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 · 2433 阅读 · 3 评论 -
一条语句将字段中的多个空格变成一个空格
这里先产生一些测试数据,前后中间都有多个空格: DECLARE @test TABLE(stringVARCHAR(8000)) INSERT INTO @test(string) SELECT N' 做 个 测试 'UNIONALL SELECT N' OK ' --第一步是将左右的空格去掉--第二不是将空格替换成空格加特殊字符,这里我是用c原创 2012-08-18 14:52:24 · 3089 阅读 · 0 评论 -
你需要差异备份吗?
通过下面的脚本可以计算出数据库从上次完整备份之数据的更改率,在Pual之前还没有人写过类似的代码。 根据运行的结果,我们可以知道数据库的数据自上次完整备份之后的数据修改程度,如果更概率非常大的情况下,我们可以直接选择完整备份,而省掉差异备份,如果更改率非常小则可以选择差异备份。(当然如果数据库小的话即使数据更改很小也不需要差异备份) 即使不需要调整你的备份计划你也可以对数据库的状况翻译 2012-08-18 09:49:06 · 1427 阅读 · 0 评论 -
DDL Trigger监控存储过程更改
下面的Trigger用于监控存储过程的更改。 创建监控表: CREATE TABLE AuditStoredProcedures( DatabaseName sysname, ObjectName sysname, LoginName sysname, ChangeDate datetime, EventType sysname, Ev原创 2012-09-18 20:42:48 · 1136 阅读 · 0 评论 -
SQL Server通配符妙用
在某些情况下熟悉SQL Server 通配符的使用可以帮助我们简单的解决很多问题。 --使用_运算符查找Person表中以an结尾的三字母名字USEAdventureWorks2012;GOSELECT FirstName, LastNameFROM Person.PersonWHERE FirstName LIKE'_an'ORDER BY FirstName;原创 2012-10-19 13:24:11 · 1770 阅读 · 0 评论 -
查看SQL Server对象的定义语句
除了在SSMS中查看view,存储过程等定义,也可以使用下面的语句直接查询: SELECT object_definition(object_id('sys.tables'));gosp_helptext 'sys.tables'goselect *from sys.system_sql_moduleswhereobject_id= object_id(原创 2014-02-24 14:49:23 · 1326 阅读 · 0 评论