--sp_revokedbaccess jacobean 删除当前数据库中的jacobean账户
--sp_change_users_login 'Report' 显示登录映射的当前用户的报告
--sp_droprole sqladmin1 删除当前数库中的sqladmin1角色
--sp_droprolemember 'sqladmin1','jacky' 从sqladmin1角色中,删除jacky这个账户
--sp_grantlogin 'nwtraders/sqladmin1' 创建登录SQL SERVER 的域用户nwtraders/sqladmin1
--sp_revokelogin 'nwtraders/sqladmin2' 废除域用户nwtraders/sqladmin2登
录SQL SERVER 的权限,但不明确地阻止nwtraders/sqladmin2访问SQL SEVER,也
就是表是,nwtraders/sqladmin2这个账户,还可以连接SQL SERVER
--sp_denylogin 'nwtraders/sqladmin3' 阻止域用户nwtraders/sqladmin3连
接SQL SERVER 也就是表是,不能用nwtraders/sqladmin1这个账户登录SQL SERVER,
也不能连接SQL SERVER
--sp_defaultdb 'nwtraders/sqladmin4','jacobean'
改变nwtraders/sqladmin4登录时的默认数据库为jacobean
--sp_defaultlanguage 'nwtraders/sqladmin5','slovak'改变nwtraders/sqladmin5登
录时的默认语言为slovak
--sp_addlogin 'jacobean','123465','jacobean','simplified chinese'
创建jacobean为新的SQL登录,密码为123456,默认数据库为jacobean,默
认语言为simplified chinese
--sp_droplogin 'jacobean'删除jacobean这个SQL登录
--sp_password '123456','321123','jacobean' 更改jacobean这个SQL登录的密码,123456为旧密码,321123为新的密码
--grant create table to jacobean, jacky, [nwtraders/sqladmin6] 将create table语句权限授
予SQL登录用户jacobean,用户自定义的角色jacky,WINDOWS 组或用户nwtraders/sqladmin6
--deny create table to jacobean 拒绝jacobean用户使用create table语句权限
--revoke all from jacobean 废除所有jacobean用户的已授予和已拒绝权限
--sp_helprotect null, null, null, 's' 列出当前数据库所有的语句权限
--grant select on name to jacobean,jacky,[nwtraders/sqladmin7] 将name这个
表的上的SELECT对象权限授予SQL登录用户jacobean,用户自定义的角色jacky,WINDOWS 组
或用户nwtraders/sqladmin7
--deny insert, update, delete to jacobean 拒绝jacobean这个账户的insert, update, delete权限
--grant select on name to jacobean with grant option 将name这个表上的SELECT对象权限授予用
户自定义的数据库角色jacobean,并且,jacobean角色上的所有成员都有权限将name这个表上的SELECT
对象权限授予其它用户,角色或组
--grant select on name to jacobean as [nwtraders/sqladmin6] 将name表上的对象权限
授予jacobean这个用户,而nwtraders/sqladmin6这个组用户通过使用AS来引用他的成员身份,
从而证明授权行是有效的
--revoke grant option for on name from jacobean as [nwtraders/sqladmin6] 废除
了jacobean的WITH GRANT OPTION权限,但表name的WITH GRANT OPTION权限没有被废除
--exec sp_helprotect 'name' 列出当前数库据中name这个表的所有的对象权限
--exec sp_helprotect null, 'jacobean' 列出jacobean在当前数据库中所有的语句权限和对象权限
--exec sp_helprotect null , null , 'nwtraders/sqladmin7' 列出当前数据库中的
组成员nwtraders/sqladmin7授予的所有对象权限
--sp_changeobjectowner name,jacobean 改变name这个表的所有者为jacobean用户
--sp_addapprole 'jacky_01','123456' 建立应用程序角色,jacky_01为应用程序角色名,123456为密码
--sp_addlinkedserver 'jacky/jacky' 链接名称为JACYK的SQL服务器上的名称为JACKY的实例
--exec sp_addmessage 50099 , 16, 'customer%d was deleted by%s', 'us_english','true' 创建用户自定义错误消息50099,当发生该错误的时候,记入WINDOWS应用程序日志
--{create procedure removecustomer @customerid varchar(5) = null
--as
--declare @username varchar(60)
--set @username = suser_name() 请注意书本上的这段代码是错误的,我已经改过来了
--begin transaction
--delete customers
--where customerid = @customerid
--raiserror (50099, 16, 1, @customerid, @username) 该段SQL语句的作用是,创建在customers表上删除客户的存储过程,而这个存储过程在执行期间,
--commit transaction} 会触发50099这个错误号,之后再用raiserror语句,其作用是用适合的值替换刚才删除的客户号和执行该存储过程的用户名.
--{error: 50099, severity: 16, state 1 由于邮件服务器无搞到,所以呢段代码无法验证而呢段代码既作用系,当用户执行remove customer存储过程时,
--remove customer 732 was deleted by nwtraders/administrator} 将触法50099错误号,并在WINDOWS日志中记录,并将错误信息发给账户管理员.
--注释:jacobean->数据库名称,C:/BACKUP/jacobean_disk.bak->文件路径和文件名
--alter database jacobean set recovery full 将数据库jacobean的恢复模型设置为full即为,完全
--alter database jacobean set recovery simple 将数据库jacobean的恢复模型设置为simple即为,简单
--alter database jacobean set recovery bulk_logged 将数据库jacobean的恢复模型设置为bulk_logged即为,大容量
--exec sp_addumpdevice 'disk', 'jacobean_disk', 'C:/BACKUP/jacobean_disk.bak' 创建硬盘永久备份设备jacobean_disk,文件名为
jacobean_disk.bak
--exec sp_addumpdevice 'tape', 'jacobean_tape', 'C:/BACKUP/jacobean_tape.bak' 创建磁带永久备份设备jacobean_tape,文件名为
jacobean_tape.bak
--exec sp_addumpdevice 'pipe','jacobean_pipe', 'C:/BACKUP/jacobean_pipe.bak' 创建磁带永久备份设备jacobean_pipe,文件名为
jacobean_pipe.bak
--backup database jacobean to disk = 'C:/BACKUP/jacobean_disk_temp.bak' 将jacobean临时备份到jacobean_disk_temp.bak文件上
--{backup database jacobean to jacobean01, jacobean02, jacobean03
--with 这段SQL语句是将jacobean数据库备份到jacobean01, jacobean02, jacobean03,这三个备份设置上,但最后一句medianame =
jacobean,是出错的,
--medianame = jacobean} 而medianame是创建备份集称的作用,但不知为什么创建不了
--backup database jacobean to disk = 'C:/BACKUP/jacobean_disk.bak' with noinit 将jacobean备份文件追加到jacobean_disk.bak文件
上
--backup database jacobean to disk = 'C:/BACKUP/jacobean_disk.bak' with format, init 将jacobean备份文件重写到
jacobean_disk.bak上
--{exec sp_addumpdevice 'disk', 'jacobean_01', 'C:/BACKUP/jacobean_01.bak'
--backup database jacobean to jacobean_01} 这段SQL语句的作用是,创建备份设备jacobean_01,再将jacobean完全备份到jacobean_01上
--backup database jacobean to jacobean_01 with init 将jacobean完全数据库备份的备份文件重写到jacobean_01设备上
--backup database jacobean to jacobean_01 with noinit 将jacobean完全数据库备份的备份文件追加到jacobean_01设备上
--backup database jacobean to disk = 'C:/BACKUP/jacobean_temp.bak' 在硬盘上创建备份文件jacobean_temp.bak,并将jacobean数据库完全备份到该文件上
--backup database jacobean to disk = 'C:/BACKUP/jacobean_01.bak' with differential 在硬盘上创建临时备份文件jacobean_01.bak,并将jacobean数据库差异备份到该文件上
--{exec sp_addumpdevice 'disk', 'jacobean_log', 'C:/BACKUP/jacobean_log.bak'
--backup log jacobean to jacobean_log} 这段SQL语句的作用是,创建日志备份设备jacobean_log,再将jacobean数据库的事务日志备份到该设备上
--backup log jacobean with truncate_only 删除jacobean数据库日志中,不活动的部份
--backup log jacobean with no_log 删除jacobean数据库日志中,不活动的部份
--file = jacobeantemp_data_02 to jacobeantemp_02 这段SQL语句语句的作用是,将jacobeantemp数据库文件组中,名称为jacobeantemp_data_02的文件,备份到设备jacobeantemp_02设备上,
--backup log jacobeantemp to jacobeantemp_log}
--{use master
--restore database jacobean
--from jacobean_disk}从设备jacobean_disk还原数据库jacobean
--{use master
--restore database jacobean
--from jacobean_01, jacobean_02, jacobean_03}从三个设备jacobean_01, jacobean_02, jacobean_03,还原数据库jacobean
--{use master
--restore database jacobean
--from jacobean_disk
--with file = 2, recovery} 从设备jacobean_disk的第二个文件还原数据库jacobean,并将数据库返回到一致性
--{use master
--restore database jacobean
--from jacobean_disk
--with recovery} 从设备jacobean_disk还原数据库jacobean,并将数据库返回到一致性
--{use master
--restore database jacobean
--from jacobean_norecovery
--with file = 1, norecovery 首先从设备jacobean_norecovery的第一个文件还原数据库jacobean,但不将数据库返回一致性,
--use master
--restore database jacobean
--from jacobean_norecovery
--with file = 2, recovery} 然后再从设备jacobean_norecovery的第二个文件还原数据库jacobean,并将数据库返回到一致性.
--{use master
--restore database jacobean
--from jacobean_data
--with norecovery 首先从设备jacobean_data中还原数据库jacobean,但不将数据库返回一致性
--restore log jacobean
--from jacobean_log
--with file = 1,
--stats,
--norecovery 然后再从设备jacobean_log的第一个事务日志文件还原事务日志到数据库jacobean,但也不将数据库返回一致性
--restore log jacobean
--from jacobean_log
--with file = 2,
--recovery} 最后从设备jacobean_log的第二个事务日志文件还原事务日志到数据库jacobean,并将数据库返回到一致性,整个数据库还原过程结束
--{use master
--restore database jacobean
--from jacobean_data_time
--with norecovery 首先从设备jacobean_data_time中还原数据库jacobean,但不将数据库返回一致性,
--restore log jacobean
--from jacobean_log_time
--with file = 1,
--norecovery 然后再从设备jacobean_log_time的第一个事务日志文件还原事务日志到数据库jacobean,但也不将数据库返回一致性
--restore database jacobean
--from jacobean_log_time
--with file = 2,
--recovery, 最后从设备jacobean_log_time的第二个事务日志文件应用发生在'June 2, 2005 8:30 pm'之前的更改,
--stopat = 'June 2, 2005 7:30 am'} 还原事务日志到数据库jacobean,并将数据库返回到一致性,整个数据库还原过程结束
--{use master
--restore database jacky 注意:数据库jacky是由三个文件组成的
--file = 'jacky2'
--from jacky_datas
--with norecovery 首先从设备jacky_datas还原文件组备份文件jacky2到数据库jacky,但不将数据库返回一致性,
--restore log jacky
--from jacky
--with file = 1, recovery} 再从事务日志备份设备jacky中的1个备份文件还原到数据库jacky,并将数据库返回到一致性
--{use jacobean
--exec sp_detach_db @dbname = 'pubs' 首先分离数据库pubs,注意:书本上是没有这一句语句的,所以按书本上打会出错!
--exec sp_attach_single_file_db @dbname = 'pubs', 再将数据库pubs付加到jacobean数据库.
--@physname = 'C:/Program Files/Microsoft SQL Server/MSSQL$JACOBEAN/Data/pubs.mdf'}
--exec sp_who 显示当前数据库的用户和进程
--exec sp_lock 显示活动锁,阻塞锁,死锁信息
--exec sp_spaceused 查询表或数据所使用的磁盘空间大小
--exec sp_helpdb 查询数据库及其对象
--exec sp_monitor 统计SQL Server的信息
--sp_helpindex sysconfigures 索引sysconfigures表
--sp_statistics sysconfigures 特定索引sysconfigures表
--select getdate() as 'Today s Date and Time', @@connections as 'Login Attempts' 记录SQL Server最近一次启动时间和试图登录的次数
--select @@error as 'error' 记录上次执行SQL语句的错误号
--select @@spid as 'spid' 记录当前用户进程的服务器进程ID,使用这个ID来识别在SP_WHO输出中的当前用户进程
--select @@procid as 'procid' 记录当前存储过程的ID
--set statistics io on 显示执行SQL语句进产生的磁盘活动总量信息
--set statistics io off 不显示执行SQL语句进产生的磁盘活动总量信息
--set statistics time on 显示分析,编译和执行SQL语句所需的时间
--set statistics time off 不显示分析,编译和执行SQL语句所需的时间
--set statistics profile on 在每次执行SQL查询之后显示一个代表该查询执行特征的结果集
--set statistics profile off 在每次执行SQL查询之后不显示一个代表该查询执行特征的结果集
--set showplan_text on 执行SQL查询
--set showplan_text off 不执行SQL查询,只返回关于SQL语句执行的详细信息
--dbcc sqlperf (LOGSPACE) 显示当前安装的所有数据库的(数据库名称,日志可用实际空间大小,事务日志信息当前占用日志文件的百分比,日志文件状态)
--dbcc opentran ('jacobean') with tableresults,no_infomsgs 获得jacobean数据库的事务信息,并以报表形式指定结果以便可以装载到表中,而且禁止显示所有信息性消息!
--dbcc show_statistics (name,姓名) 显示name表上以"姓名"为索引的统计信息.
--dbcc checkdb ('jacobean') 显示jacobean数据库中所有对像的分配及结构完整性
--dbcc checkdb ('jacobean',noindex) 显示jacobean数据库中对像的分配及结构完整性,并指定不检查非系统表的非聚集索引
--dbcc checkdb ('jacobean',noindex) with no_infomsgs 显示jacobean数据库中对像的分配及结构完整性,并指定不检查非系统表的非聚集索引,而且禁止显示所有信息性消息!
--dbcc checkfilegroup ('frimary') 显示数据库文件组中所有表的分配及结构完整性,注意:frimary为文件组名,但经测试,该语句运行不成功!
--dbcc checktable ('name') 显示表name的数据,索引,文本,非文本和图像页的完整性
--创建一个名为postalcode的数据类型,它包含了10个字节符数据,并且可以为MULL USE ClassNorthwind IF EXISTS (SELECT domain_name FROM information_schema.domains WHERE domain_schema = 'dbo' AND domain_name = 'postalcode') EXEC sp_droptype postalcode GO EXEC sp_addtype postalcode, 'nvarchar(10)' , NULL GO --验证已经创建的数据类型 USE ClassNorthwind SELECT domain_name FROM information_schema.domains ORDER BY domain_name GO --创建用户定义数据类型:City Region Country --最多15个字节的字符数据,可以为MULL USE ClassNorthwind IF EXISTS (SELECT domain_name FROM information_schema.domains WHERE domain_schema = 'dbo' AND domain_name = 'city') EXEC sp_droptype city IF EXISTS (SELECT domain_name FROM information_schema.domains WHERE domain_schema = 'dbo' AND domain_name = 'region') EXEC sp_droptype region IF EXISTS (SELECT domain_name FROM information_schema.domains WHERE domain_schema = 'dbo' AND domain_name = 'country') EXEC sp_droptype country GO EXEC sp_addtype city, 'nvarchar(15)', NULL EXEC sp_addtype region, 'nvarchar(15)', NULL EXEC sp_addtype country, 'nvarchar(15)', NULL GO --查看数据库中的用户定义数据类型 SELECT domain_name FROM information_schema.domains ORDER BY domain_name GO --在ClassNorthwind数据库中创建Employees表 USE ClassNorthwind IF OBJECT_ID('dbo.Employees') IS NOT NULL DROP TABLE dbo.Employees GO CREATE TABLE dbo.Employees ( EmployeeID int IDENTITY (1, 1) NOT NULL , LastName nvarchar (20) NOT NULL , FirstName nvarchar (10) NOT NULL , Title nvarchar (30) NULL , TitleOfCourtesy nvarchar (25) NULL , BirthDate datetime NULL , HireDate datetime NULL , Address nvarchar (60) NULL , City city , Region region , PostalCode postalcode , Country country , HomePhone nvarchar (24) NULL , Extension nvarchar (4) NULL , Photo image NULL , Notes ntext NULL , ReportsTo int NULL , PhotoPath nvarchar (255) NULL ) ON [PRIMARY] GO --查看是否创建了该表 SELECT table_name FROM information_schema.tables WHERE table_name = 'Employees' GO --删除Employees表 USE ClassNorthwind GO If OBJECT_ID('dbo.Employees') IS NOT NULL DROP TABLE dbo.Employees GO --查看是否有下列表名 SELECT table_name FROM information_schema.tables WHERE table_name IN ( 'Employees' --表名 , 'Categories' --表名 , 'Customers' --表名 ) GO --在ClassNorthwind数据库Employees表中添加Age列 USE ClassNorthwind ALTER TABLE Employees ADD Age tinyint NULL go --在ClassNorthwind数据库Employees表中添加Age列 USE ClassNorthwind ALTER TABLE Employees DROP COLUMN age go --查看Employees表的存储过程 exec sp_help Employees GO --在Employees表中添加Age列数据类型为tinyint,可以为空 ALTER TABLE Employees ADD Age tinyint NULL go --删除Employees表中Age列 USE ClassNorthwind ALTER TABLE Employees DROP COLUMN age go |