◆ 概述 MSDB 数据库是 4 个可见系统数据库之一,另外3个分别是master、model 和 TempDB 。MSDB目的是跟踪一系列常见 DBA 活动历史记录,如备份和恢复。 下面探讨一下MSDB一些特性 ◆ MSDB特性 ◆ 1、备份和恢复历史存储在 msdb 中 msdb 包含备份还原历史记录。因此,我们可以通过查询相应的表来获得几乎所有关于已执行备份的信息。 msdb 数据库中。 为了轻松找到并突出显示脚本中使用的 msdb 数据库的存储过程,我们只需在搜索框中 键入msdb : 由此可见,msdb数据库的sp_add_job和sp_add_jobstep 存储过程是用来创建作业和作业步骤的 : ◆ 5、msdb 数据库包含与日志传送相关的信息 日志传送相关信息和存储过程也存储在 msdb 数据库中。
sql server 每次在备份的时候都会把相关信息记录到msdb库下面的表里面,为了更直观的查看备份的情况,我们可以在grafana上配置相关图表进行展示。 bs LEFT JOIN msdb.dbo.backupmediafamily bf ON bs. [media_set_id] INNER JOIN msdb.dbo.backupmediaset bms ON bs.[media_set_id] = bms. bs LEFT JOIN msdb.dbo.backupmediafamily bf ON bs. [media_set_id] INNER JOIN msdb.dbo.backupmediaset bms ON bs.[media_set_id] = bms.
获取有关每个数据库的成功备份的信息 select * from [msdb].[dbo]. , msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date, CASE msdb..backupset.type , msdb.dbo.backupmediafamily.physical_device_name, msdb.dbo.backupset.name AS backupset_name FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
1 public Partition alterPartition(final RawStore msdb, Warehouse wh, final String dbname, 2 从代码中我们可以看到: 1、通过Table tbl = msdb.getTable(dbname, name); get到该表的整个元数据的封装信息。 oldPartName.equals(newPartName)) { 18 msdb.deletePartitionColumnStatistics(dbName, tableName, oldPartName, partVals, null); 19 } else { 20 Partition oldPartition = msdb.getPartition 而且太晚了,后续补上....)代码如下: 1 try { 2 destPath = new Path(wh.getTablePath(msdb.getDatabase
DECLARE @ReturnCode INT SELECT @ReturnCode = 0 --添加类别 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name='添加作业' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category DECLARE @JobID BINARY(16) DECLARE @ErrMsg NVARCHAR(500) SELECT @JobID = job_id FROM msdb.dbo.sysjobs ( @JobID IS NOT NULL ) BEGIN -- 检查此作业是否为多重服务器作业 IF ( EXISTS ( SELECT * FROM msdb.dbo.sysjobservers fsinterval<>1 set @time=0 set @ffactor=case @freqtype when 'day' then 0 else 1 end EXEC msdb
创建作业 --定时执行数据同步的存储过程 if exists(SELECT 1 from msdb..sysjobs where name='数据处理') EXECUTE msdb.dbo.sp_delete_job @job_name='数据处理' exec msdb..sp_add_job @job_name='数据处理' --创建作业步骤 declare @sql varchar(800),@dbname varchar(250) select @sql='exec p_synchro' --数据处理的命令 ,@dbname=db_name() --执行数据处理的数据库名 exec msdb..sp_add_jobstep database_name=@dbname, @command = @sql, @retry_attempts = 5, --重试次数 @retry_interval = 5 --重试间隔 --创建调度 EXEC msdb
添加计划的脚本如代码: DECLARE @schedule_id int EXEC msdb.dbo.sp_add_jobschedule @job_name =N'LSBackup_logTrans1 active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id 【注意:sp_add_jobschedule存储过程是在msdb active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id --设置还原作业的计划 EXEC msdb.dbo.sp_add_jobschedule 启用作业仍然使用sp_update_job存储过程,具体操作如代码: EXEC msdb.dbo.sp_update_job @job_name='LSCopy_logTrans1', @enabled =1 EXEC msdb.dbo.sp_update_job @job_name='LSRestore_logTrans2', @enabled=1 通过以上10部操作就完成了对日志传送的配置。
override go exec sp_configure 'database mail xps',1 reconfigure with override go --创建邮件帐户信息 exec msdb.dbo.sysmail_add_account_sp , -- 用户名 @PASSWORD = '邮件密码' -- 密码 GO --数据库配置文件 exec msdb.dbo.sysmail_add_profile_sp SQLServer_DotNetCrazy1', -- 配置名称 @description = '数据库邮件配置文件' -- 配置描述 go --用户和邮件配置文件相关联 exec msdb.dbo.sysmail_add_profileaccount_sp sequence_number = 1 -- account 在 profile 中顺序(默认是1) go (提示:可以左右滑动代码) 发送邮件脚本: exec msdb.dbo.sp_send_dbmail
(Microsoft SQL Server,错误: 20582) 解决处理 select * from msdb.dbo.MSdistpublishers DELETE FROM msdb.dbo.MSdistpublishers select * from msdb.dbo.MSdistpublishers exec sp_droplinkedsrvlogin 'LC04',null exec sp_dropserver
也就是HiveAlterHandler的name,那么具体,我们来看下它alterTable时的实现,前方高能,小心火烛:) 1 public void alterTable(RawStore msdb ()); //如果columns不一致,则删除已有的column统计信息 66 updatePartColumnStatsForAlterColumns(msdb , oldt, newt); 163 // now finally call alter table 164 msdb.alterTable(dbname, name, newt success) { 139 msdb.rollbackTransaction(); 140 } 141 if (success && newPartLoc ! (); 157 msdb.alterPartition(dbname, name, new_part.getValues(), oldPart); 158
--这些系统表只存在msdb数据库,使用的时候必须加上msdb前缀 7. sp_lock、sp_who、sp_who2、sp_helptext等一些系统存储过程存在于每个数据库中 8. 修复msdb数据库,比如ssms页面sql server agent丢失或看不了job view history等功能,说明msdb坏了,需要修复 dbcc checkdb (msdb); 18. 查询某个存储过程被哪些job调用了 SELECT * FROM msdb.dbo.sysjobs JOB WITH( NOLOCK) INNER JOIN msdb. dbo.sysjobsteps STP 命令执行某个job EXECUTE msdb.dbo.sp_start_job N'job_name' 45. 查询ssis包的信息 select * from msdb.dbo.sysssispackages 72.
SQL Server 数据库中的系统数据库 master 数据库配置用户信息等系统信息 model 模板库,系统所创建的所有数据库的模板 msdb 提供sqlserver代理程序调度警报和作业时使用 tempdb 保存临时表和临时存储过程 系统数据库master、model、msdb因为被修改地比较少,且对数据库系统影响较大,所以每次修改后应该及时备份; tempdb是系统临时文件的数据库,每次启动后都会清空
database use msdb -- Enable show advanced options on the server sp_configure 'show advanced options [cmd_exec]; GO 现在您应该能够通过"msdb"数据库中的"cmd_exec"存储过程执行操作系统命令,如下例所示 完成后,您可以使用下面的TSQL删除过程和程序集 DROP PROCEDURE :tempcmd_exec.txt 如果一切顺利,"c:tempcmd_exec.tx"文件应该包含以下TSQL命令,在示例中十六进制字符串已被截断,但您的字符串应该更长 -- Select the MSDB database USE msdb -- Enable clr on the server Sp_Configure ‘clr enabled’, 1 RECONFIGURE GO -- Create 您可以使用下面的TSQL查询来验证您的CLR程序集是否设置正确,或者开始寻找现有的用户定义的CLR程序集 注意:这是我在这里找到的一些代码的修改版本 USE msdb; SELECT SCHEMA_NAME
仅原生的数据库msdb启用了这个属性。 要演示这个权限提升技术,guest用户必须在msdb授予模拟dbo的权限。 要执行模拟测试,首先切换到msdb数据,然后执行"EXECUTE AS USER"语句。 通过USER_NAME()可以看到当前用户的上下文: use msdb; EXECUTE AS USER = 'dbo'; SELECT USER_NAME(); go EXECUTE AS USER模拟
两个默认文件夹被命名为文件系统和MSDB。 SQL Server msdb数据库。 在Stored Packages的MSDB节点下,可以看见刚才生成的SSIS包,在包上点击右键,选择Run Pakcage 运行Execute Package Utility ? ? ? ? ? 再次去打开msdb节点,我们发现了用dtutil导出的包,然后依照前文所说的方法运行包,可以观察生成新的文本文件的导出。 ? ?
,每一步都算数 预备知识: 需要准备的包:pymssql import pymssql 连接数据库: db = pymssql.connect(host='localhost', database='msdb cursor.execute(sql) db.commit() 完整代码: import pymssql db = pymssql.connect(host='localhost', database='msdb
+ Char(10) FROM master.sys.master_files WHERE Db_name(database_id) NOT IN ( 'master', 'model', 'msdb master.sys.master_files x, master.sys.master_files y WHERE Db_name(x.database_id) NOT IN ( 'master', 'model', 'msdb
AlterHandler extends Configurable { 2 3 /** 4 * handles alter table 5 * 6 * @param msdb thrown if there is any other error 21 */ 22 public abstract void alterTable(RawStore msdb handles alter table, the changes could be cascaded to partitions if applicable 28 * 29 * @param msdb thrown if there is any other error 46 */ 47 public abstract void alterTable(RawStore msdb
通过定义一套确定分区的值来区分查询到子集,这些值可以使列,标量函数,子查询或者变量 举例如下: SELECT COUNT(*) FROM [msdb].sys.indexes; 查询结果如下: 这种情况下查询仅仅返回一个数字,这就是msdb数据库的索引的数量。 现在让我们加入OVER子句到这个查询中: SELECT object_id, index_id, COUNT(*) OVER () FROM [msdb].sys.indexes; 结果集如下: PARTITION BY子句来看看结果如何改变: SELECT object_id, index_id, COUNT(*) OVER (PARTITION BY object_id) FROM [msdb
(疑问)我们跟进去会发现,其调用了updatePartColumnStats方法: private void updatePartColumnStats(RawStore msdb, String String newTableName = HiveStringUtils.normalizeIdentifier(newPart.getTableName()); Table oldTable = msdb.getTable oldPartName.equals(newPartName)) { msdb.deletePartitionColumnStatistics(dbName, tableName, oldPartName , partVals, null); } else { Partition oldPartition = msdb.getPartition(dbName, tableName MetaStoreUtils.areSameColumns(oldCols, newPart.getSd().getCols())) { updatePartColumnStatsForAlterColumns(msdb