RT,谢谢
解决方案 »
- 行求和放入指定列
- 怎样查看数据库中哪些表为空,怎样搜索到一个数据库中的所有指定的字段名和字段值
- 求得到"昨天,今天"日期函数的SQL
- 在sql server里怎么用二进制存图片?
- 在线求助!
- 在Access可以,但在sql server不行,大家帮忙看看!
- excel2003导入到sql2005
- sql server 2008 r2 安装完后启动不了
- web通过tcpip链接sql数据库服务出现的问题求教
- syntax error converting the varchar value 'a' to a column of data type int'
- 如果从A数据库复制数据到B数据库?
- 关于INSERT的简单问题
/**
1、不允许删除、修改表格
**/
CREATE TRIGGER reminder
ON DATABASE
FOR CREATE_TABLE
AS
DECLARE @data XML = EVENTDATA()
DECLARE @str NVARCHAR(150)
SET @str=suser_sname() +N' 通过 '+APP_NAME()
+N' 在 '+convert(varchar(20), getdate(),120) +N' ,创建了 '''
+CONVERT(sysname,@data.query('data(//ObjectName)'))+''''
RAISERROR(@str,10,1) WITH LOG
GO
--建表测试
if OBJECT_ID('test') is not null
drop table test
go
create table test (id int identity(1,1) primary key , name varchar(200))
go--删除触发器
DISABLE TRIGGER [reminder] ON DATABASE
DROP TRIGGER [reminder] ON DATABASE
GO
--删除表格测试
drop table test
go
/**
2、不允许删除、修改表格
**/
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT N'不允许删除表格-safety!!!!'
ROLLBACK
GO--删除表格测试
drop table test
go
--删除触发器
drop TRIGGER safety on database
go
/**
3、tblDdlLog 监控系统增删查改情况
**/--创建日志表
CREATE TABLE tblDdlLog (
LogId int identity(1,1) primary key,
PostTime datetime2(3) DEFAULT(SYSDATETIME()),
AppName varchar(50),
LoginName nvarchar(100),
DB_User nvarchar(100),Object sysname,
Event nvarchar(100),
TSQL nvarchar(2000),
EventData XML);
GO--创建触发器
CREATE TRIGGER log
ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @data XML = EVENTDATA()
INSERT tblDdlLog
(AppName,LoginName, DB_User, Object, Event, TSQL, EventData)
VALUES
(APP_NAME(),
CONVERT(nvarchar(100), @data.query('data(//LoginName)')),
CONVERT(nvarchar(100), CURRENT_USER),
CONVERT(sysname,@data.query('data(//ObjectName)')),
CONVERT(nvarchar(100), @data.query('data(//EventType)')),
--CONVERT(nvarchar(2000), @data.query('data(//TSQLCommand)')),
CONVERT(nvarchar(2000), @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(2000)')),
@data) ;
GO--测试语句
CREATE TABLE TestTable (a int)
ALTER TABLE TestTable Add b nvarchar(10)
DROP TABLE TestTable
GO
--查看测试结果
SELECT * FROM tblDdlLog
--删除触发器
DROP TRIGGER log ON DATABASE
--删除表格
TRUNCATE TABLE tblDdlLog
DROP TABLE tblDdlLog