FOR XML PATH应用

stuID学生编号,sName代表学生姓名,hobby列存学生的爱好!

Sql Server 常用操作2-LMLPHP

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby

FROM (

SELECT sName

,SELECT hobby+',' FROM student   WHERE sName=A.sName   FOR XML PATH('')) AS StuList

FROM student A

GROUP BY sName

) B

Sql Server 常用操作2-LMLPHP

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SSMS 登录框内保存的登录信息如何清除

经常使用SQL Server Management Studio(后文简称SSMS)连接不同服务器以后,会在登录框内留下很多服务器的记录,很多可能只是偶尔连接或者服务器现在已经不可用了,总摆在那里有点碍眼,特别对于有强迫症的人。那么这些不用的服务器信息怎么清理呢?

如果使用的SSMS版本是2012或者2014,那么有福了,SSMS本身就提供了删除服务器信息的功能。

删除方法:以2012版SSMS为例

Sql Server 常用操作2-LMLPHP

如上图,首先在下拉列表里选中要清除的服务器信息,假如要清除“测试实例3”这个服务器的信息,先点击“服务器名称”下拉框,之后用键盘上的上下键来选中“测试实例3”,切记键盘选中以后不要用鼠标点击服务器名称框!之后按键盘上的Del键,看到了吗?下来列表里已经没有“测试实例3”了。但是“服务器名称”里怎么还有?不用着急,用鼠标点击其它服务器名以后“测试实例3”就会彻底消失了。当然,要使设置永久保存下来,需要正常关闭SSMS。

2008 R2以及之前版本的SSMS不支持这种清除方法。

对于2008 R2版本SSMS来说,要想有选择性的清除,本身是做不到的,但是可以利用2012或者2014的SSMS来间接进行清除。

2008 R2、2012、2014版的SSMS保存服务器信息的配置文件格式是相同的,所以可以把2008 R2的配置文件放在2012或者2014的配置目录里,之后启动相应版本的SSMS来操作。有个问题,这么做是不是有点蛋疼?都有了更高版本的SSMS了为什么还用低版本的SSMS?这个嘛,因人而异,安装多个版本的SSMS有时候也是为了测试需要或者其它目的……

2008 R2版的配置文件位于%APPDATA%\Microsoft\Microsoft SQL Server\100\Tools\Shell 目录,可以复制这个地址到地址栏里直接访问,配置文件是SqlStudio.bin 。

2012版的配置文件是%APPDATA%\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin ,

2014版的配置文件是%APPDATA%\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin 。

2008版的清除方法与2008 R2理论上应该一样,由于没有测试环境,所以就不进行验证了。

如果现在还在使用2005版的SSMS,那么没有选择性清除的方法。但是可以做得绝一些——把SSMS的设置完全清除。当然,如果登录框中有很多重要的信息需要保存,为了不让这些信息丢失,可以先将有用的信息以“已注册的服务器”的形式保存下来。如何添加“已注册的服务器”就不说了,知道怎么用的自然知道怎么添加。

好了,有用的信息保存下来以后。可以开始干了。2005版SSMS的配置文件位于%APPDATA%\Microsoft\Microsoft SQL Server\90\Tools\Shell目录,文件名是mru.dat。

直接把mru.dat删除,之后启动SSMS,这时候SSMS是刚安装以后的初始状态,登录框中也就不包含任何保存的信息了。当然,这种做法针对2008及以后版本也同样适用,只要删除相应配置文件就可以了。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

释放数据库占用的服务器内存

USE master

GO

CREATE  proc  [dbo].reclaimmemory

as

Begin

DBCC FREEPROCCACHE

--删除计划缓存中的所有元素(计划缓存作用:完全相同语句第二次的执时免编译;命中率不高会造成内存浪费.

DBCC  FREESESSIONCACHE

--刷新针对实例执行的分布式查询所使用的分布式查询连接缓存。(分布式查询连接缓存作用:提高IO的性能 )

--此操作会在短时间(5-10分钟)内造成IO,IO等待,和带宽使用量的大幅度升高

DBCC FREESYSTEMCACHE('All')

--释放所有当前未使用的缓存(包含数据缓存)(慎重选择)

--基本相当于重启SQL SERVERE服务

DBCC DROPCLEANBUFFERS

--释放所有缓存(慎重选择)

--基本相当于重启SQL SERVERE服务

--以上四个操作可以根据需要选择其中的一个或多个,这四个操虽然释放了缓存,但SQL SERVER并没有释放占用的内存。

EXEC sp_configure 'show advanced options', 1;   --打开高级设置选项

EXEC ('RECONFIGURE' )

exec sp_configure 'max server memory', 10240;

--设置最大内存值(MB) (不要设置的太小)

--此操作是为释放SQL SERVER占用的内存

EXEC ('RECONFIGURE' )

WAITFOR DELAY '00:00:03'    --等待3秒

EXEC  sp_configure 'max server memory', 2147483647;       --将最大内存值还原为原来的数值

EXEC ('RECONFIGURE' )

EXEC sp_configure 'show advanced options', 0;   --关闭高级设置选项

EXEC ('RECONFIGURE' )

end

-- EXEC  reclaimmemory     --执行存储过程

建议此方法在服务器内存长时间超过95%时使用,并且在使用时根据实际情况选择需要释放的缓存项,其他情况不建议使用。

04-18 10:12