SQLServer DBA
文章平均质量分 84
薛定谔的DBA
这个作者很懒,什么都没留下…
展开
-
SSMS 非常有用的一些功能
SQL Server 官方客户端管理工具 SQL Server Management Studio(SSMS),做了非常多且实用的功能,极大方便了使用者对 SQL Server 数据库系统的相关操作和运维。转载 2024-03-11 20:42:05 · 496 阅读 · 0 评论 -
SQL Server 自动化运维工具 dbatools
dbatools 使用了 .Net framework 中的 SMO (Server Management Objects),与使用SSMS (SQL Server management studio) 相同。一旦你学会了如何使用 PowerShell 之类的自动化工具,你就可以轻松地对你的SQL Server 服务器进行更方便的运维。Get-Help Get-DbaSqlService -Detailed –命令详细帮助文档,包括参数说明和示例。Get-Command –列出服务器中安装的所有包命令。原创 2023-02-05 14:24:55 · 992 阅读 · 0 评论 -
SQLServer 维护脚本分享(04)服务器角色和数据库角色相关操作
/*------------------------------------------------------------------------------------ 【服务器级别—服务器角色】------------------------------------------------------------------------------------*/--原创 2015-05-25 23:14:54 · 2469 阅读 · 0 评论 -
SQLServer 维护脚本分享(11)部分DBCC及系统存储过程
--DBCC命令与用法DBCC HELP('?')DBCC HELP('useroptions')DBCC USEROPTIONS WITH NO_INFOMSGS--当前DB的区及文件DBCC showfilestats --所有数据库事务日志大小及百分比 DBCC sqlperf(logspace)--当前虚拟日志数量DBCC loginfo--事务日志大小及百分比原创 2015-12-27 11:57:05 · 1410 阅读 · 0 评论 -
SQLServer 维护脚本分享(09)相关文件读取
SQLServer 相关文件读取原创 2015-12-27 10:27:04 · 1471 阅读 · 0 评论 -
SQLServer 常用脚本
-- 表结构查询SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 ...原创 2013-02-05 01:36:02 · 3684 阅读 · 0 评论 -
SQL Server 维护脚本分享(13)数据库内部日常巡检
--当前正在执行的语句select session_id,transaction_id,wait_type,last_wait_type,wait_resource,start_time,status,command,estimated_completion_time,cpu_time,logical_reads,text,open_transaction_count,open_results...原创 2017-05-15 01:01:43 · 1760 阅读 · 0 评论 -
SQL Server 维护脚本分享(12)查看数据库空间分配情况(准确)
查看数据库空间分配情况(详细)原创 2017-04-06 14:12:37 · 1242 阅读 · 0 评论 -
SQLServer 怎么升级补丁?
一直以来打算整理 SQL Server 补丁资料,刚好今天有事醒的早,于是把之前的资料整理一下。在入DBA这坑以来,开始那一两年,甚至只知道补丁安装最新 Service Package (SP)就行了,也曾一度混淆 SP 与 Cumulative Update(CU)。走过的坑,还是整理给后来人吧。注: 从 SQL server 2017 开始,SP 将不再提供,后期补丁使用 CU。而 201...原创 2017-05-17 20:34:40 · 11779 阅读 · 3 评论 -
SQLServer 生成还原数据库脚本的存储过程!
手动还原备份时,比较麻烦,尤其日志文件多的时候!由于国庆时不在,同事需要查询历史数据,需要还原数据库时不敢还原,才想到写这个脚本。脚本中会误差5分钟,如果有日志备份时间小于5分钟的可以改下脚本。该脚本适合有完整+差异+日志的备份。 存储过程提供个参数: 还原的数据库:@DatabaseNVARCHAR(128)还原后的别名:@RecoveryDBNameNVARCHAR(...原创 2015-10-15 16:59:09 · 3686 阅读 · 0 评论 -
SQL Server 数据库规范
SQL Server 数据库规范一、命名规范常用对象命名规范,使用帕斯卡命名法(Pascal,单词首字母大写),统一使用英文。1.表。英文单数名词,尽量写完整单词名称一般不超过3个英文单词都可表达出表的意思。使用帕斯卡命名法。如:User,UserRole,Role,Group,Family,SalesOrderDetail错误例...原创 2017-12-21 17:55:52 · 3902 阅读 · 0 评论 -
SQL Server 维护脚本分享(14)堵塞SQL跟踪
之前文章(SQLServer 利用profiler生成脚本在后台跟踪堵塞语句或慢查询语句) 有用 profiler 可以慢查询或堵塞查询,但是profiler 开销太大,又需要指定时长。现在用个简单sql定时查询统计。最底部执行的脚本,会查询当前正在被堵塞和堵塞其他会话的会话。原创 2017-12-18 15:38:13 · 675 阅读 · 0 评论 -
SQL Server 代理作业配置和执行情况
很早之前保存的,出处没记录~SELECT /*S.job_id,*/ S.job_name, S.is_job_enabled, S.is_schedule_enabled, S.schedule_name, S.Description ,avg_duration_in_seconds = avg(datediff(s, '1/1/2000', ('1/1/2000 ' + cast(st...转载 2018-03-07 11:24:06 · 1447 阅读 · 0 评论 -
Powershell 巡检日报 PS-MSSQLReporter
刚好放假事情少了,花了两天时间,把日常巡检报表做好了,已在 github 中开源:PS-MSSQLReporter 。觉得不错的欢迎在 GitHub 中给颗星星。 有时候我们想查看数据库的一些基本信息,但是统计比较麻烦,不好收集和整理。另外一些日常巡检,因为在监控中不会监控一些系统信息,所以只能手动访问数据库查看。Powershell 当前还没有网页开发模块,但有 HTML 相关模块。...原创 2019-01-31 22:13:48 · 1645 阅读 · 1 评论 -
SQLServer 维护脚本分享(06)CPU
--CPU相关视图SELECT * FROM sys.dm_os_sys_infoSELECT * FROM sys.dm_exec_sessionsSELECT * FROM sys.sysprocessesSELECT * FROM sys.dm_os_tasksSELECT * FROM sys.dm_os_workersSELECT * FROM sys.dm_os_threa原创 2015-12-26 00:02:34 · 1242 阅读 · 0 评论 -
SqlServer 错误日志切换和查看
Sql Server 日志 和 代理错误日一般在实例重启后自动切换,如果实例久未重启,将可能积累太多的日志,不方便查看.日志切换:(需要权限: sysadmin 固定服务器角色的成员)-- "Sql Server 日志"切换exec msdb.dbo.sp_cycle_errorlog-- "代理错误日志"切换exec msdb.dbo.sp_cycle原创 2015-06-09 14:35:37 · 11691 阅读 · 2 评论 -
SQLServer 维护脚本分享(10)索引
--可添加索引的字段SELECT top 100 migs.user_seeks,migs.avg_total_user_cost,migs.avg_user_impact,migs.last_user_seek,mid.statement ,mid.equality_columns ,mid.included_columns,mid.inequality_columns,migs.uniqu原创 2015-12-27 11:51:22 · 981 阅读 · 0 评论 -
SQLServer 多点及时备份技巧
为了保证数据库的安全性,我们都会规划数据库的容灾策略,包括本地备份、异地备份、raid,或者使用高可用性(如 日志传送、镜像、复制等)进行异地容灾。由于 SqlServer 数据库的备份只有一个备份策略(如 完整-差异-日志),对某个数据库中,只创建一个完整的策略,不要创建多个,否则备份链对不上,备份各在一方。对于备份,一般使用 完整备份+差异备份+日志备份,或者 完整备份+差异备原创 2015-07-25 19:53:37 · 2382 阅读 · 1 评论 -
SQLServer 维护脚本分享(02)数据库文件增长及收缩情况
--先确定是否开启了默认跟踪,没有则需开启跟踪一段时间exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'default trace enabled'--当前数据库文件历史增长记录exec sp_executesql @stmt=N'begin try if (selec原创 2015-01-25 23:36:02 · 1255 阅读 · 0 评论 -
SQLServer 维护脚本分享(03)数据库中记录CPU最近N分钟内的使用情况
(此脚本为网络参考,出处不详)DECLARE @ts_now bigint = (SELECT cpu_ticks/(cpu_ticks/ms_ticks) FROM sys.dm_os_sys_info WITH (NOLOCK)); -- 前N行则表示最近的N分钟内CPU使用情况SELECT TOP(60) DATEADD(ms, -1 * (@ts_now - [time原创 2015-01-25 23:56:57 · 1352 阅读 · 0 评论 -
SQLServer 复制中移除和添加发布而不初始化所有项目
-- 若提前“禁止架构更改”,新增的列不会自动添加大发布,此时应使用 sp_articlecolumn 添加列EXEC sp_changepublication @publication = N'publication', @property = N'replicate_ddl', @value = 0--【移除和添加发布而不初始化所有项目】-- 禁止匿名访问Exec sp_ch原创 2015-06-27 22:23:16 · 2597 阅读 · 0 评论 -
SQLServer 系统数据库msdb备份信息太多
正在整理数据库备份情况。发现 msdb 中有太多备份历史信息,统计查看结果如下:select OBJECT_NAME(id),rows from sys.sysindexes where indid in(0,1)and rows > 0order by rows desc找其中一个表查看时间,这些记录包含了2年多的历史信息!~这些信息没什么用,于是找到两个存储过程把它删除原创 2015-07-21 11:16:40 · 2317 阅读 · 0 评论 -
SQLServer 维护脚本分享(01)谁对数据库对象进行了DDL操作?
-- 查看事件类型描述,确定事件id(trace_event_id)SELECT tc.name,te.trace_event_id,te.name,tc.type,CASE tc.type WHEN 0 THEN '普通' WHEN 1 THEN '连接' WHEN 2 THEN '错误' END AS [type]FROM sys.trace_categories tc INNER J原创 2015-01-25 00:51:05 · 1439 阅读 · 0 评论 -
SQLServer 中dm_os_ring_buffers(ring_buffer_connectivity)读取XML
select distinct ring_buffer_type from sys.dm_os_ring_buffers/*RING_BUFFER_OOM RING_BUFFER_RESOURCE_MONITOR - 监控资源的使用情况,可以提供分析物理内存压力的信息。RING_BUFFER_SCHEDULER_MONITOR - 监控逻辑调度器的状态,以及健康的记录类型。RING_B原创 2014-12-28 12:39:07 · 2119 阅读 · 0 评论 -
SQLServer 代理 停止时设置定时检查启动
由于服务器压力过大,主要是推送发布较多,SQLserver代理有时会停止。如果没时间常看到监控,也可以让代理自动启动。网上找了个脚本稍加改动完成。以下保存为一个批处理文件:net_start_SQLSERVERAGENT.bat再利用Windows的 “任务计划” 定时执行。(如果检查到代理运行,不做处理;没有运行,则启动SQLserver代理)@echo offfor原创 2015-02-14 10:51:09 · 3012 阅读 · 0 评论 -
SQLServer 利用profiler生成脚本在后台跟踪堵塞语句或慢查询语句
分享个SQLServer profiler 的一个技巧吧。很早用过,忘记总结了,现在再用时记录下来。当启用 SQLServer profiler 跟踪sql语句的时候,是非常方便的,同时也可以按照各个维度筛选跟踪。但是对于长时间跟踪,一直打开着profiler界面不是很好。有一个技巧是可以把profiler 的跟踪设置导出成sql 脚本,脚本可以在后台执行。以跟踪慢查询为例。1.原创 2015-10-19 18:09:54 · 9203 阅读 · 4 评论 -
SqlServer 查看当前锁请求脚本
--当前锁请求情况exec sp_lockselect req_spid,case req_status when 1 then '已授予' when 2 then '正在转换' when 3 then '正在等待' end as req_status,case rsc_type when 1 then 'NULL 资源(未使用)' when 2 then '数据库' when 3 th原创 2015-03-30 13:44:51 · 3159 阅读 · 0 评论 -
SqlServer 并发事务:死锁跟踪(三)6种跟踪死锁的方法总结
方法一:打开profiler跟踪事件 locks: deadlock graph方法二:打开1222或者1204标志记录死锁,在sqlserver日志查看DBCC TRACEON(1222,-1) DBCC TRACEON(1204,-1)如果日志太多就不好找了,这时可以用系统扩展存储过程筛选!--查看是否死锁,确定死锁的的原创 2015-01-07 22:51:21 · 18537 阅读 · 0 评论 -
SQLServer sp_MSforeachtable和sp_MSforeachdb用法
sp_MSforeachtable 和 sp_MSforeachdb 都是SQLserver 未正式公布(Undocumented)的存储过程,对管理员来说,经常需要在多库多表执行sql命令或者统计数据库信息都是比较方便的。当前将用2个示例说明这2个存储过程是怎么使用的:存储过程参数说明:exec @return_value=sp_MSforeachtable @comma原创 2015-09-19 13:35:22 · 3142 阅读 · 0 评论 -
SQLServer 维护脚本分享(05)内存(Memory)
--查看设置的最大最小每次exec sp_configure 'max server memory (MB)'exec sp_configure 'min server memory (MB)'--SqlServer目标内存、当前内存 、数据库内存页数SELECT object_name,counter_name,cntr_value,cntr_value/1024/1024 AS [原创 2015-12-25 23:33:34 · 2903 阅读 · 0 评论 -
SQLServer 维护脚本分享(07)IO
sp_helpfile --当前数据库文件分配情况sp_spaceused --当前db空间大小(有时不准)sp_spaceused 'dbo.user' --指定表的空间大小(有时不准)sp_helpdb --所有数据库文件分配情况sp_helpdb 'tempdb' --指定的数据库文件分配情况EXEC xp_cmdshell 'wmic logicaldisk get ca原创 2015-12-26 00:30:03 · 996 阅读 · 0 评论 -
SQLServer 维护脚本分享(08)临时数据库(tempdb)
dbcc sqlperf(logspace) --各数据库日志大小及使用百分比dbcc loginfo --查看当前数据库的虚拟日志文件--临时表'Tempdb'最近使用情况SELECT t1.session_id,t1.internal_objects_alloc_page_count*8.0/1024 as internal_objects_alloc_MB,t1.intern原创 2015-12-26 00:48:06 · 1084 阅读 · 0 评论 -
SQL Server 中登录账号与数据库用户迁移
1. 先创建一个SqlServer身份验证的登录名,并映射到数据库中。如:创建用户 [kk] 映射到数据库 [mytest],此时数据库 [mytest]会增加一个用户 [kk]2. 此时再删除登录名 [kk],删除后,数据库[mytest]将存在一个孤立用户 [kk]3. 查看当前数据库中是否存在孤立用户use m原创 2015-01-30 18:00:59 · 19018 阅读 · 7 评论