Chapter12 Examples
Chapter12 Examples
1
USE master;
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'p1s4w9d16!';
GO
CREATE CERTIFICATE cert01
WITH SUBJECT = 'Certificate for dbo';
Example 12.2
SELECT p.name, c.name, certificate_id
FROM sys.database_principals p, sys.certificates c
WHERE p.principal_id = p.principal_id;
Example 12.3
USE sample;
GO
-- Associate the certificate to the sample database
USE sample;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE cert01;
Example 12.4
USE master;
ALTER DATABASE sample SET ENCRYPTION ON;
Example 12.5
USE master;
SELECT * FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
Example 12.6
USE sample;
CREATE TABLE employee_encr(
emp_no INT NOT NULL,
emp_lname nvarchar (11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (ENCRYPTION_TYPE = DETERMINISTIC,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256',
COLUMN_ENCRYPTION_KEY = MyCEK) NOT NULL,
salary MONEY
ENCRYPTED WITH (ENCRYPTION_TYPE = RANDOMIZED,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256',
COLUMN_ENCRYPTION_KEY = MyCEK) NOT NULL);
Example 12.7
USE sample;
SELECT t.name AS table_name, c.name AS column_name,
c.encryption_type_desc AS encr, k.name
FROM sys.columns c JOIN sys.column_encryption_keys k
ON (c.column_encryption_key_id= k.column_encryption_key_id)
JOIN sys.tables t ON (c.object_id = t.object_id);
Example 12.8
USE sample;
CREATE LOGIN mary WITH PASSWORD = 'you1know4it9!';
Example 12.9
USE sample;
CREATE LOGIN [NTB11901\pete] FROM WINDOWS;
Example 12.10
USE sample;
GO
CREATE SCHEMA my_schema AUTHORIZATION peter;
GO
CREATE TABLE product
(product_no CHAR(10) NOT NULL UNIQUE,
product_name CHAR(20) NULL,
price MONEY NULL);
GO
CREATE VIEW product_info
AS SELECT product_no, product_name
FROM product;
GO
GRANT SELECT TO mary;
DENY UPDATE TO mary;
Example 12.11
USE AdventureWorks;
ALTER SCHEMA HumanResources TRANSFER Person.ContactType;
Example 12.12
USE sample;
CREATE USER peter FOR LOGIN [NTB11901\pete];
CREATE USER mary FOR LOGIN mary WITH DEFAULT_SCHEMA = my_schema;
Example 12.13
USE sample;
CREATE APPLICATION ROLE weekly_reports
WITH PASSWORD ='x1y2z3w4!',
DEFAULT_SCHEMA =my_schema;
Example 12.14
USE master;
GO
CREATE SERVER ROLE programadmin;
ALTER SERVER ROLE programadmin ADD MEMBER mary;
Example 12.15
USE sample;
CREATE ROLE marketing AUTHORIZATION peter;
GO
ALTER ROLE marketing ADD MEMBER peter;
ALTER ROLE marketing ADD MEMBER mary;
Example 12.16
USE sample;
GRANT CREATE TABLE, CREATE PROCEDURE
TO peter, mary;
Example 12.17
USE sample;
GRANT CREATE FUNCTION TO mary;
Example 12.18
USE sample;
GRANT SELECT ON employee
TO peter, mary;
Example 12.19
USE sample;
GRANT UPDATE ON works_on (emp_no, enter_date) TO peter;
Example 12.20
USE sample;
GRANT VIEW DEFINITION ON OBJECT::employee TO peter;
GRANT VIEW DEFINITION ON SCHEMA::dbo TO peter;
Example 12.21
USE sample;
GRANT CONTROL ON DATABASE::sample TO peter;
Example 12.22
USE sample;
GRANT SELECT ON works_on TO mary
WITH GRANT OPTION;
Example 12.23
USE sample;
DENY CREATE TABLE, CREATE PROCEDURE
TO peter;
Example 12.24
USE sample;
GRANT SELECT ON project
TO PUBLIC;
DENY SELECT ON project
TO peter, mary;
Example 12.25
USE sample;
REVOKE SELECT ON project
FROM PUBLIC;
Example 12.26
USE my_sample;
CREATE USER my_login WITH PASSWORD = 'x1y2z3w4?';
Example 12.27
USE sample;
EXECUTE sys.sp_cdc_enable_db;
Example 12.28
USE sample;
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'dbo', @source_name = N'works_on',
@role_name = N'cdc_admin';
Example 12.29
USE sample;
INSERT INTO works_on VALUES (10102, 'p2', 'Analyst', NULL);
INSERT INTO works_on VALUES (9031, 'p2', 'Analyst', NULL);
INSERT INTO works_on VALUES (29346, 'p3', 'Clerk', NULL);
Example 12.30
USE sample;
SELECT *
FROM cdc.fn_cdc_get_all_changes_dbo_works_on
(sys.fn_cdc_get_min_lsn('dbo_works_on'), sys.fn_cdc_get_max_lsn(), 'all');
Example 12.31
USE sample;
DECLARE @from_lsn binary(10), @to_lsn binary(10);
SELECT @from_lsn =
sys.fn_cdc_map_time_to_lsn('smallest greater than', GETDATE() - 1);
SELECT @to_lsn =
sys.fn_cdc_map_time_to_lsn('largest less than or equal', GETDATE());
SELECT * FROM
cdc.fn_cdc_get_all_changes_dbo_works_on (@from_lsn, @to_lsn, 'all');
Example 12.32
USE sample;
GO
CREATE VIEW v_without_budget
AS SELECT project_no, project_name
FROM project;
Example 12.33
USE sample;
GO
ALTER TABLE employee
ADD user_name CHAR(60) DEFAULT SYSTEM_USER;
GO
CREATE VIEW v_my_rows
AS SELECT emp_no, emp_fname, emp_lname, dept_no
FROM employee
WHERE user_name = SYSTEM_USER;
Example 12.34
USE sample;
GO
CREATE VIEW v_analyst
AS SELECT employee.emp_no, emp_fname, emp_lname
FROM employee, works_on
WHERE employee.emp_no = works_on.emp_no
AND job = 'Analyst';