日度归档:2018年7月24日

mssql sqlserver 调试存储过程的方法分享


摘要:
下文讲述sqlserver中使用print调试存储过程的方法分享


对于超长的存储过程,我们可以在存储过程指定位置放入
print 打印变量信息,输出指定变量的值,
通过print 打印出的值判断出此处的执行是否合理及脚本出错的位置,方便对存储过程进行调试,如下所示:

   例:调试存储过程pr_test
   ---1.建立测试存储过程
   create proc pr_test 
   as 
   begin
     declare @a int 
    set @a = 1 
     print '行号1:'
     print 'a:'+convert(varchar(20),@a )
    set @a = 2/0 
     print '行号2:'
     print 'a:'+convert(varchar(20),@a )
     end 

  ---2 运行存储过程,打印相关变量观察输出数值是否合理
   exec pr_test 
    ---通过运行以上存储过程,我们可以观察出:
     2.1 存储过程运行报错
     2.2 存储过程运行中,在消息窗中,输出 
       行号1:
       a:1
      然后报相关错误信息:
    从以上返回信息 ,我们可以看出sql脚本在第二个print输出后,运行报错,从以上错误信息我们可以快速查找出sql脚本出错的位置,然后进行相关的修改和调整达到调试sql存储过程的目的
  

mssql sqlserver 2008 R2 内存占用变大的处理方法分享


摘要:
sqlserver 数据库随着运行时间的加长, 占用内存变的越来越大,下文分享通过系统设置避免数据库占用内存变大的方法分享,如下所示:


sqlserver 随着运行时间的增长,缓存了很多数据库对象,加快数据库的执行速度,下文讲述处理sqlserver数据库占用内存大的方法:

方法1:通过设置sqlserver引擎占用的最大内存,强制限制内存占用

通过SSMS管理工具,连接到指定的数据库服务器,然后在 服务器上点击右键,选择 属性 内存, 去掉AWE分配内存(64位),设置最大服务器内存(MB)大小(sql指定占用内存大小),重启sql服务。

方法2:定时重启sql服务,使数据库占用内存得到释放

在window操作系统中,设置定时任务,定时重启sql服务,使sqlserver占用内存得到释放,输入以下批处理脚本

net stop sqlserveragent —停止代理任务
net stop mssqlserver —停止sql服务
net start mssqlserver —开启sql服务
net start sqlserveragent —开启代理任务

mssql sqlserver 查看sql数据引擎占用内存情况查看


摘要:
下文讲述使用sysperfinfo系统表获取sql引擎占用的内存情况分析,如下所示:

   ---方法1:
   select *,CAST(cntr_value/1024.0 as decimal(18,2))  as  [内存占用(M)]
    from master.sys.sysperfinfo  
    where counter_name='Total Server Memory (KB)'
    ----------------------------------------
   ---方法2:
   SELECT physical_memory_in_use_kb/1024   as  [内存占用(M)] ,* 
   FROM sys.dm_os_process_memory
mssql_sqlserver_内存占用情况查看

mssql_sqlserver_内存占用情况查看