--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語句是將jacobeanDatabase Backup到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完全Database Backup的備份檔案重寫到jacobean_01裝置上
--backup database jacobean to jacobean_01 with noinit 將jacobean完全Database Backup的備份檔案追加到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 |
|