06
2014
03

数据库触发器和服务器触发器的创建和查看

 

一、数据库触发器

CREATE TRIGGER 禁删与修改表
 ON DATABASE
FOR
 DROP_TABLE,ALTER_TABLE
AS 
PRINT '请不要删除或修改表!'
ROLLBACK TRANSACTION

05
2014
03

DDL触发器语法介绍

 

语法:

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier >  [ ; ] }

05
2014
03

SQL Server数据库DDL触发器作用域

 

DLL触发器为了响应各种数据定义语言 (DDL) 事件而激发。这些事件主要与以关键字 CREATE、ALTER 和 DROP 开头的 Transact-SQL 语句对应。执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。


 1.了解触发器的作用域
在响应当前数据库或服务器上处理的 Transact-SQL 事件时,可以触发 DDL 触发器。触发器的作用域取决于事件。例如,每当数据库中或服务器实例上发生 CREATE_TABLE 事件时,都会激发为响应 CREATE_TABLE 事件创建的 DDL 触发器。仅当服务器上发生 CREATE_LOGIN 事件时,才能激发为响应 CREATE_LOGIN 事件创建的 DDL 触发器。
 在下面的示例中,每当数据库中发生 DROP TABLE 或 ALTER TABLE 事件时,都会激发 DDL 触发器 safety。
 
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
   PRINT 'You must disable Trigger "safety" to drop or alter tables!'
   ROLLBACK;

05
2014
03

SQL Server数据库触发器防止删除修改数据表

 

创建数据库触发器:
create trigger prevent_drop_table ON DATABASE FOR DROP_TABLE
AS
RAISERROR('Not allowed to drop tables.', 10, 1)
PRINT 'DROP TABLE attempt in database ' + DB_NAME() + '.'
PRINT CONVERT (nvarchar (1000),EventData())
ROLLBACK
GO

05
2014
03

DDL触发器与DML触发器的区别和比较

 

DDL 触发器和 DML 触发器的用处不同。

DML 触发器在 INSERT、UPDATE 和 DELETE 语句上操作,并且有助于在表或视图中修改数据时强制业务规则,扩展数据完整性。

DDL 触发器在 CREATE、ALTER、DROP 和其他 DDL 语句上操作。它们用于执行管理任务,并强制影响数据库的业务规则。它们应用于数据库或服务器中某一类型的所有命令。

可以使用相似的 Transact-SQL 语法创建、修改和删除 DML 触发器和 DDL 触发器,它们还具有其他相似的行为。

01
2014
03

查看SQL Server版本号和SQL Server补丁的方法

 

一、打开SQL Server Management Studio,在控制台中的SQL Server属性中,有一个常规项,里面有一句产品版本,直接标注着是哪一个补丁包;

 

二、打开SQLSERVER配置管理器,然后用鼠标左键双击打开属性对话框,然后选择高级选项卡就可以看到SQL的版本信息

22
2014
02

SQL创建文件夹

 

 

EXEC master..xp_cmdshell 'mkdir E:\bank',NO_OUTPUT

 

mkdir 命令

用途
创建一个或多个新的目录。

语法
mkdir [ -m Mode ] [ -p ] Directory ...

27
2014
01

SQL Server查询数据库文件大小和每张表所占空间大小

1、查询各个磁盘分区的剩余空间:

Exec master.dbo.xp_fixeddrives


2、查询数据库的数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)

select * from [数据库名].[dbo].[sysfiles]

转换文件大小单位为MB:

select name, convert(float,size) * (8192.0/1024.0)/1024. from [数据库名].dbo.sysfiles

20
2014
01

SQL Server Errolog错误日志过大的清理方法


 SQL数据库的日常维护中,查看 SQL Server 错误日志可以用来确认服务的运行情况:例如服务的启停、备份和还原操作、登录认证情况等等,需要经常性的查看。


       SQL Server自身对错误日志有其特有的处理机制,即SQL Server默认保留7次错误日志文件,在产生新的错误日志的同时,最老的那个日志也被删除了。

      我们在做日常维护的时候会发现一个问题——单个错误日志文件很大,导致日志文件所在的C盘的空间被大量的占据。通常出现这种情况时可以做如下的处理方法:

12
2014
01

检测SQL SERVER数据库CPU瓶颈及内存瓶颈

 

一、SQL Server 数据库CPU瓶颈   
      对于SQL Server的一个工作进程的状态有很多,主要状态有运行中(RUNNING)、可运行(RUNNABLE)和挂起(SUSPENED)3种。
通过查看系统监视计数器Processor:% Processor Time,可以确定CPU瓶颈。如果这个计数器的值很高。比如持续15-20分钟超80%,就意味着CPU出现了瓶颈。