SQL Server 2008 R2运行越久,占用内存会越来越大。第一种:有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边批处理:net stop sqlserveragentnet stop mssqlservernet start mssqlservernet start sqlserveragent第二种:进入Sql server 企业管理器(管理数据库和表的,这个都不知道就不用往下看了),在数据库服务器名称上点击【右键】,选择【属性】,然后,找到【内存】选项,在右边的【使用AWE分配内存】(sqlServer64的应该不用勾)左边把对勾打上。在最大服务器内存(MB)上填入适当的大小(具体填多大,肯定不能超过计算机的物理内存,当然,也可以在任务管理器中查一下,sqlserver.exe占有多大时,系统会变慢作为参考),记得是以M(兆)为单位,点确定,重启一下Sql服务器!OK!解决SQL Server CPU占用率高SQL Server CPU占用率高,一般是因为查询数据量大,执行时间长造成的。这里提供调试方法,方便找出异常sql1、打开SQL Server Profiler2、新建跟踪a.点击新建跟踪,并设置好数据库连接b.设置跟踪属性,选择模板“Standard” c.切到“事件选择”进行跟踪设置 1) 只保留如下两个事件选项 2) 点击列筛选 3) 进行详细筛选设置    设置CPU时间作为筛选条件,单位毫秒(用于跟踪耗CPU占用较长的查询,可设置为大于等于20000,按CPU内核数×1000,可以跟踪CPU占用100%大于1秒的查询)3、点击运行,跟踪语句,定位CPU占用较多的语句如下图所示,CPU占用2660146毫秒,CPU为24 核,则至少CPU占用100%耗时2660146/24/1000 = 110秒才可以执行好相应的操作4、根据语句特征,在你的服务器程序中找到相应的功能,作出修正4.1) 分析查询中需要检索数据量较大的部分,作出简单修正(如注销)4.2) 更新后重新执行此查询,查看profiler中是否CPU占用消失4.3) 如果已消失说明问题定位正确,可以优化查询,若CPU占用任然很多,则回滚修改,

在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题。特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题。此篇文章意在解决安装步骤没有问题,但安装后无法登录的问题。在解决问题之前请朋友们打开服务窗口,看“SQL Server”主服务是否打开,如下图。若服务已经打开还是用“SQL Server 身份验证”和“Windows 身份验证”都无法登录请看下面的步骤。 往往这时,服务器类型我们选择了“数据库引擎”时,查找里面的可登录用户名是没有的,下边的服务器名称只显示为“(local)”,连“Windows 身份验证”都无法登录。出错后弹出的窗口为:错误号:2。如果朋友们和我出错的问题是一样请看下面的步骤。1.又键单击“我的电脑(windows XP)”或“计算机(Windows 7)”查看本机的计算机名。2.打开“SQL Server 2008”,服务器类型选择:数据库引擎。服务器名称写上:计算机名\安装SQL Server时自己创建的实例名。身份验证选择:SQL Server 身份验证。填上自己设置的登录名和密码。如下图:3.点击“连接”就可以登录了,如下图。此时,SQL Server 2008登录出错的问题就解决了。总结:SQL Server 2008 版本数据库软件的服务器名称较SQL Server 2005版本做了改变,现在使用的是:计算机名\实例名。这就导致了“无法连接到(local)”的问题。

表的创建CREATE TABLE `lee` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `birthday` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8数据插入:insert into lee(name,birthday) values ('sam','1990-01-01');insert into lee(name,birthday) values ('lee','1980-01-01');insert into lee(name,birthday) values ('john','1985-01-01');第一种用法:SELECT name, CASE WHEN birthday < '1981' THEN 'old' WHEN birthday > '1988' THEN 'yong' ELSE 'ok' END YORNFROM lee第二种用法:SELECT NAME, CASE name WHEN 'sam' THEN 'yong' WHEN 'lee' THEN 'handsome' ELSE 'good' END as oldnameFROM lee第三种:当然了,case when 语句还可以复合select name, birthday, case when birthday > '1983' then 'yong' when name='lee' then 'handsome' else 'just so so' endfrom lee;在这里用sql语句进行日期比较的话,需要对年加引号,要不然可能结果和预期的结果不同, 当然也可以用year函数来实现select name, case when year(birthday) > 1988 then 'yong' when year(birthday) < 1980 then 'old' else 'ok' ENDfrom lee;==========================================================create table penalties( paymentno INTEGER not NULL, payment_date DATE not null, amount DECIMAL(7,2) not null, primary key(paymentno))insert into penalties values(1,'2008-01-01',3.45);insert into penalties values(2,'2009-01-01',50.45);insert into penalties values(3,'2008-07-01',80.45);第一题:对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40到80之间的罚款,第三类high包含所有大于80的罚款select payment_date, amount, case when amount >= 0 AND amount < 40 then 'low' when amount >=40 AND amount < 80 then 'moderate' when amount >=80 then 'high' else 'null' ENDFROM penalties第二题:统计出属于low的罚款编号select * from ( select paymentno, amount, case when amount >= 0 AND amount < 40 then 'low' when amount >=40 AND amount < 80 then 'moderate' when amount >=80 then 'high' else 'incorrect' end lvl from penalties) as pwhere p.lvl = 'low'PS:Mysql,Case When,Case多个字段 select distinct a.PatientID,a.PatientCode,a.PatientSex,a.MobileNo,a.HomePhoneNo,a.UserAge,a.PatientName,a.PatientIDCard, DATE_FORMAT(a.RegistDate,'%Y-%m-%d') as RegistDate, case when b.usedstartTime is not null and b.UsedEndTime is null then '1'when b.usedstartTime is not null and b.UsedEndTime is not null then '2' end as 'usedState' from mets_v_patient_baseinfo a left join mets_devices_used_history b on a.patientid = b.PatientID where (select ifnull(IsDeleted,0) from userpublic_info where UserID = a.PatientID ) = 0 and 1=1 order by PatientID Desc limit 0,

遇到的问题,问题产生原因不详。症状为,windows服务中有一项oracle服务启动不了,报出如下错误。 Windows 不能在 本地计算机 启动 OracleDBConsoleorcl 。有关更多信息,查阅系统事件日志。如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2 后从网上寻得一贴,问题解决,解决原因不详,反正就是解决了。 问题描述:学校机房母盘安装Oracle10g传输到其它机器,母盘的Oracle可以正常使用,而其它机器启动Oracle服务时无法启动。 具体为:在“服务”中启动“OracleDBConsoleorcl”时出现“Windows不能在本地计算机启动OracleDBConsoleorcl。 有关更多信息,查阅系统事件日志。如果这是非Microsoft服务,请与服务厂商联系,并参考特定服务错误代码2”。 原因分析:安装Oracle的电脑修改计算机名或IP后将无法启动服务。 解决方法: 1、删除原数据库实例“orcl”(注意:最好在传输前在母盘上完成此步,否则删除后必须重新启动电脑): 开始->所有程序->Oracle-OraDb10g_home1->配置和移植工具->Database Configuration Assistant->下一步-> 删除数据库->下一步->完成->是->是->取消->是。 --------------------------- 2、重新配置监听程序: 开始->所有程序->Oracle-OraDb10g_home1->配置和移植工具->Net Configuration Assistant-> “监听程序配置”下一步->“重新配置”下一步->下一步->下一步->下一步->“否”下一步->(取消->)完成。 3、重新安装数据库实例“orcl”: 开始->所有程序->Oracle-OraDb10g_home1->配置和移植工具->Database Configuration Assistant->下一步-> 创建数据库->下一步->下一步->“全局数据库名”输入“orcl”(“SID”将自动填充相同字符)下一步->下一步-> 为“所有帐户使用同一口令”输入原来安装时的口令和确认口令(“welcome”)下一步->下一步->下一步->下一步->下一步->下一步->下一步->下一步-> 完成->确定->退出。 4、本地Net服务名配置: 开始->所有程序->Oracle-OraDb10g_home1->配置和移植工具->Net Configuration Assistant-> “本地Net服务名配置”下一步->“删除”下一步->下一步->是->下一步->下一步-> “本地Net服务名配置”下一步->“添加”下一步->“服务名”输入“orcl”下一步->下一步-> 输入本机真实的“主机名”(可在“我的电脑”属性中查得)下一步->“是,进行测试”下一步-> 更改登录->口令修改为“welcome”确定->下一步->网络服务器名为“orcl”下一步->下一步->下一步->(取消->)完成。 5、试用PL/SQLdev是否能登录。 6、登录“http://主机名或IP:1158/em”(注意此时有可能1158已变成了5500或其它端口了), 用户名“system”口令“orcl”登录->我同意->管理。

我们在日常操作中,免不了对数据库的某张表,一次性的要插入多条记录,但是首先想到的就是复制,粘帖N多重复的INSERT INTO 语句,万一某一个少了一个分号,或多个逗号之类的,产生错误,要找起来可就费尽了,既浪费时间,又耽误工作。除了上面所说的方法外,其实还有二中方法,相比较起来要比之前那个要简洁。首先是之前那个方法:    复制代码 代码如下:INSERT INTO MyTable(ID,NAME) VALUES(1,'123');INSERT INTO MyTable(ID,NAME) VALUES(2,'456');INSERT INTO MyTable(ID,NAME) VALUES(3,'789');第二种方法,使用UNION ALL来进行插入操作:   复制代码 代码如下:INSERT INTO MyTable(ID,NAME)SELECT 4,'000'UNION ALLSELECT 5,'001'UNION ALLSELECT 6,'002'是不是要比第一种方法简单点,据说要比第一种要快!第三种方法就有点特别了,是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了,所以赶快升级吧!体验一下SQL Server2008给我们带了的好处。  复制代码 代码如下:INSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')上面演示了3种不同的方法来向数据库一次插入多条数据,第三种方法看起来比较简洁高效,推荐大家都赶快升级到SQL Server2008吧。

分类:腾博会手机版下载

时间:2016-02-07 01:06:16