FOR XML PATH应用
stuID学生编号,sName代表学生姓名,hobby列存学生的爱好!
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
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SSMS 登录框内保存的登录信息如何清除
经常使用SQL Server Management Studio(后文简称SSMS)连接不同服务器以后,会在登录框内留下很多服务器的记录,很多可能只是偶尔连接或者服务器现在已经不可用了,总摆在那里有点碍眼,特别对于有强迫症的人。那么这些不用的服务器信息怎么清理呢?
如果使用的SSMS版本是2012或者2014,那么有福了,SSMS本身就提供了删除服务器信息的功能。
删除方法:以2012版SSMS为例
如上图,首先在下拉列表里选中要清除的服务器信息,假如要清除“测试实例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%时使用,并且在使用时根据实际情况选择需要释放的缓存项,其他情况不建议使用。