diff --git a/9781430239819.jpg b/9781430239819.jpg new file mode 100644 index 0000000..23f6e20 Binary files /dev/null and b/9781430239819.jpg differ diff --git a/9781430239819/Chapter 10/ch10script.sql b/9781430239819/Chapter 10/ch10script.sql new file mode 100644 index 0000000..a64155a --- /dev/null +++ b/9781430239819/Chapter 10/ch10script.sql @@ -0,0 +1,61 @@ +--Detecting fragmentation +CREATE DATABASE Sales +GO +CREATE TABLE Customers (customer_id INT PRIMARY KEY, +customer_name CHAR(255) NOT NULL) +GO +INSERT INTO Customers VALUES(1,'user1') +GO +DECLARE @i INT +WHILE (@i<1000) +BEGIN +INSERT INTO Customers(customer_id,customer_name) VALUES(@i,'UserXXXX') + +SET @i=@i+1 +END +GO + + +DBCC SHOWCONTIG(‘Customers’) + +--Distribution Statistics +CREATE TABLE LotsOfRandomNumbers +(number_generated INT, +seed INT, +random_number FLOAT) +GO + +--Create sample data +DECLARE @i INT +DECLARE @RNF FLOAT +DECLARE @RNI INT +SET @i=0 + +WHILE (@i <= 100000) +BEGIN +SET @RNF = RAND(@i) +INSERT INTO LotsOfRandomNumbers VALUES((CAST(0x7FFFFFFF AS int) * @RNF),@i,@RNF ) +SET @i=@i+1 +END +GO +CREATE NONCLUSTERED INDEX NC_number_generated ON dbo.LotsOfRandomNumbers(number_generated) +GO + +SELECT s.object_id, + OBJECT_NAME(s.object_id) AS table_name, + COL_NAME(s.object_id, sc.column_id) AS 'Column Name', + s.Name AS 'Name of the statistics', + s.auto_created as 'Is automatically created' +FROM sys.stats AS s + INNER JOIN sys.stats_columns AS sc + ON s.stats_id = sc.stats_id AND s.object_id = sc.object_id +WHERE s.object_id = OBJECT_ID( 'dbo.LotsOfRandomNumbers') +GO + +SELECT seed FROM LotsOfRandomNumbers WHERE random_number < .5 +GO +UPDATE STATISTICS dbo.LotsOfRandomNumbers +GO +UPDATE STATISTICS dbo.LotsOfRandomNumbers WITH SAMPLE 25 PERCENT, ALL +GO + diff --git a/9781430239819/Chapter 10/dogs.txt b/9781430239819/Chapter 10/dogs.txt new file mode 100644 index 0000000..2610001 --- /dev/null +++ b/9781430239819/Chapter 10/dogs.txt @@ -0,0 +1,3 @@ +pet_id,pet_name,pet_weight,MicroChipID +14,George,60,BN8XA +15,Betty,14,H73A1 \ No newline at end of file diff --git a/9781430239819/Chapter 11/Code11-1.sql b/9781430239819/Chapter 11/Code11-1.sql new file mode 100644 index 0000000..8cb72b4 --- /dev/null +++ b/9781430239819/Chapter 11/Code11-1.sql @@ -0,0 +1,145 @@ +USE [master] +GO +CREATE LOGIN [TestLogin] WITH PASSWORD=N'PaSsWoRd!' + MUST_CHANGE, DEFAULT_DATABASE=[master], +CHECK_EXPIRATION=ON, CHECK_POLICY=ON +GO + +USE [master] +GO +EXEC sys.sp_addsrvrolemember @loginame = N'TestLogin', @rolename = N'sysadmin' +GO + +USE master +GO +GRANT SHUTDOWN TO +GO + +SELECT Name,Protocol_desc from sys.endpoints + +CREATE LOGIN MyAppLogin WITH PASSWORD='PaSsWoRd1' +GO +DENY CONNECT on ENDPOINT::[TSQL Default TCP] to MyAppLogin +GO +DENY CONNECT on ENDPOINT::[TSQL Default VIA] to MyAppLogin +GO +DENY CONNECT on ENDPOINT::[TSQL Named Pipes] to MyAppLogin +GO + +CREATE SERVER ROLE [DBA Role] + +GRANT CONTROL SERVER TO [DBA Role] +GO +DENY ALTER ANY SERVER AUDIT TO [DBA Role] +GO +DENY ALTER ANY LOGIN TO [DBA Role] +GO +DENY IMPERSONATE ON LOGIN::CorporateAuditor TO [DBA Role] +GO +ALTER SERVER ROLE [DBA Role] ADD MEMBER [Julie] + +USE master +GO +CREATE DATABASE Accounting +GO +CREATE LOGIN DevLogin WITH PASSWORD='asdif983*#@YRfjndsgfD' +GO +USE Accounting +GO +CREATE USER DevUser FOR LOGIN DevLogin +GO +GRANT CREATE TABLE TO DevUser +GO + +USE Accounting +GO +CREATE TABLE Customers +(id INT NOT NULL, +firstname VARCHAR(20) NOT NULL, +lastname VARCHAR(40) NOT NULL) +GO + +GRANT ALTER ON SCHEMA::dbo TO DevUser + +CREATE SCHEMA People +GO +GRANT ALTER ON SCHEMA::People TO DevUser +GO + +USE Accounting +GO +CREATE TABLE [People.Customers] +(id INT NOT NULL, +firstname VARCHAR(20) NOT NULL, +lastname VARCHAR(40) NOT NULL) +GO + +CREATE USER DevUser FOR LOGIN DevLogin +WITH DEFAULT_SCHEMA = People + +ALTER AUTHORIZATION ON SCHEMA::People TO TestUser + +USE [Accounting] +GO +EXEC sp_addrolemember N'db_datareader', N'DevUser' +GO +GRANT SELECT ON Customers TO BusinessAnalysts + +REVOKE SELECT ON Customers TO BusinessAnalysts + +DENY SELECT ON Customers to Bob + +USE AdventureWorks +GO +CREATE ROLE Developers AUTHORIZATION DevManager +GO + +sp_addrolemember 'Developers', 'Bryan' + +GRANT CREATE TABLE TO Developers + +SELECT * FROM fn_my_permissions(NULL, 'DATABASE'); + +SELECT HAS_PERMS_BY_NAME('Customers', 'OBJECT', 'SELECT') + +EXECUTE AS USER=’Bryan’ +GO +SELECT HAS_PERMS_BY_NAME('Customers', 'OBJECT', 'SELECT') +GO + +USE master +GO +CREATE DATABASE Customers +GO +Sp_configure 'show advanced options', 1 +RECONFIGURE +GO +Sp_configure 'contained database authentication', 1 +RECONFIGURE WITH OVERRIDE +GO + +ALTER DATABASE Customers SET CONTAINMENT=PARTIAL; + +USE Customers +GO +CREATE USER [SalesRep1] WITH PASSWORD='pass@word1'; +GO + +CREATE USER [ROB-DENALI-1\Bob] + +-- +--Open a Command Shell in the context of the Windows User Bob +--You can do this without completely logging out of the desktop by using the RUNAS command +--You will need to be an administrator or have impersonation rights on Bob for this to work +-- +--Click Start and type, RUNAS /USER: "CMD.EXE" +--where is Bob in this script or whatever the name of the local user you created. +-- +--Once the command window is open you can try to connect to the SQL instance directly using +--SQLCMD -E -S. +-- +--and try to connect directly to the database +--SQLCMD -E -S. -d "Customers" + + +select * from sys.dm_db_uncontained_entities \ No newline at end of file diff --git a/9781430239819/Chapter 12/Code12-1.sql b/9781430239819/Chapter 12/Code12-1.sql new file mode 100644 index 0000000..0917344 --- /dev/null +++ b/9781430239819/Chapter 12/Code12-1.sql @@ -0,0 +1,184 @@ +USE MASTER +GO +CREATE SERVER AUDIT [Compliance Audit] +TO FILE +( FILEPATH = N'c:\audit' +) +WITH +( QUEUE_DELAY = 1000, + ON_FAILURE = CONTINUE +) +GO + +USE master +GO +ALTER SERVER AUDIT [Compliance Audit] +WHERE server_principal_id <> 268 +GO + +SELECT * FROM sys.server_principals + +USE MASTER +GO +CREATE SERVER AUDIT SPECIFICATION [Logins] +FOR SERVER AUDIT [Compliance Audit] +ADD (FAILED_LOGIN_GROUP) +GO +ALTER SERVER AUDIT SPECIFICATION Logins WITH (STATE=ON) +GO +ALTER SERVER AUDIT [Compliance Audit] WITH (STATE=ON) +GO + +select * from fn_get_audit_file('c:\audit\*.*',null,null) + +USE [Accounting] +GO +CREATE DATABASE AUDIT SPECIFICATION [Customer information] + FOR SERVER AUDIT [Compliance Audit] + ADD(SELECT ON Customers by public) +GO + +USE master +GO +CREATE DATABASE Accounting +GO +USE Accounting +GO +CREATE TABLE Customers +(id INT NOT NULL, +firstname VARCHAR(20) NOT NULL, +lastname VARCHAR(40) NOT NULL) +GO +ALTER DATABASE AUDIT SPECIFICATION [Customers Table] + WITH (STATE=ON) +GO +CREATE PROCEDURE ViewCustomers +AS +BEGIN +SELECT * FROM Accounting.dbo.Customers +END +CREATE SERVER AUDIT [UserDefinedAudits] +TO FILE +( FILEPATH = N'C:\audit' + ,MAXSIZE = 0 MB + ,MAX_ROLLOVER_FILES = 2147483647 + ,RESERVE_DISK_SPACE = OFF +) +WITH +( QUEUE_DELAY = 1000 + ,ON_FAILURE = CONTINUE +) +GO +ALTER SERVER AUDIT [UserDefinedAudits] +WITH (STATE=ON) +GO +USE [master] +GO +CREATE SERVER AUDIT SPECIFICATION [CustomAudits] +FOR SERVER AUDIT [UserDefinedAudits] +ADD (USER_DEFINED_AUDIT_GROUP) +WITH (STATE=ON) +GO +EXEC sp_audit_write @user_defined_event_id = 1000 , + @succeeded = 1 + , @user_defined_information = N'User Bob logged into application.' ; + + +USE [master] +GO +CREATE LOGIN BankManagerLogin WITH PASSWORD='g4mqw9K@32!@' +GO +CREATE DATABASE ContosoBank +GO +USE [ContosoBank] +GO +CREATE USER BankManagerUser FOR LOGIN BankManagerLogin +GO +CREATE TABLE Customers +(customer_id INT PRIMARY KEY, +first_name varchar(50) NOT NULL, +last_name varchar(50) NOT NULL, +social_security_number varbinary(100) NOT NULL) +GO +GRANT SELECT, INSERT, UPDATE, DELETE ON Customers TO BankManagerUser +GO +CREATE SYMMETRIC KEY BankManager_User_Key +AUTHORIZATION BankManagerUser +WITH ALGORITHM=TRIPLE_DES +ENCRYPTION BY PASSWORD='HighFeesRule!' +GO +EXECUTE AS USER='BankManagerUser' +GO +OPEN SYMMETRIC KEY [BankManager_User_Key] DECRYPTION BY PASSWORD='HighFeesRule!' +GO +INSERT INTO Customers VALUES (1,'Howard','Stern', +EncryptByKey(Key_GUID('BankManager_User_Key'),'042-32-1324')) +INSERT INTO Customers VALUES (2,'Donald','Trump', +EncryptByKey(Key_GUID('BankManager_User_Key'),'035-13-6564')) +INSERT INTO Customers VALUES (3,'Bill','Gates', +EncryptByKey(Key_GUID('BankManager_User_Key'),'533-13-5784')) +GO + +CLOSE ALL SYMMETRIC KEYS +GO +OPEN SYMMETRIC KEY [BankManager_User_Key] DECRYPTION BY PASSWORD='HighFeesRule!' +GO + +SELECT customer_id,first_name + ' ' + last_name AS ‘Name’, +CONVERT(VARCHAR,DecryptByKey(social_security_number)) as 'Social Security Number' +FROM Customers +GO + +CLOSE ALL SYMMETRIC KEYS +GO +REVERT +GO +USE [ContosoBank] +GO +CREATE MASTER KEY +ENCRYPTION BY PASSWORD = 'Some!@Complex*@(39' +GO +CREATE CERTIFICATE BankManagersCert +AUTHORIZATION BankManagerUser +WITH SUBJECT=’Bank manager’’s certificate’ +GO +OPEN SYMMETRIC KEY [BankManager_User_Key] DECRYPTION BY PASSWORD='HighFeesRule!' +GO +ALTER SYMMETRIC KEY BankManager_User_Key +ADD ENCRYPTION BY CERTIFICATE BankManagersCert +GO +ALTER SYMMETRIC KEY BankManager_User_Key +DROP ENCRYPTION BY PASSWORD='HighFeesRule!' +GO +CLOSE ALL SYMMETRIC KEYS +GO +EXECUTE AS USER='BankManagerUser' +GO +USE [ContosoBank] +GO +OPEN SYMMETRIC KEY [BankManager_User_Key] DECRYPTION BY CERTIFICATE BankManagersCert +GO +SELECT customer_id,first_name + ' ' + last_name, +CONVERT(VARCHAR,DecryptByKey(social_security_number)) as 'Social Security Number' +FROM Customers +GO +CLOSE ALL SYMMETRIC KEYS +GO +USE master; +GO +--This database master key is created in master +-- and is used to protect the certificate +CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'EOhnDGS6!7JKv'; +GO +--This certificate is used to protect the database encryption key +CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate'; +GO +--You are now ready to create the Database Encryption Key +USE ContosoBank +GO +CREATE DATABASE ENCRYPTION KEY +WITH ALGORITHM = AES_128 +ENCRYPTION BY SERVER CERTIFICATE MyServerCert +GO +ALTER DATABASE ContosoBank SET ENCRYPTION ON; +GO diff --git a/9781430239819/Chapter 13/Chapter13.sql b/9781430239819/Chapter 13/Chapter13.sql new file mode 100644 index 0000000..de0bb29 --- /dev/null +++ b/9781430239819/Chapter 13/Chapter13.sql @@ -0,0 +1,92 @@ +SELECT * +FROM sys.dm_os_performance_counters ; + + + +SELECT * +FROM sys.dm_os_performance_counters AS dopc +WHERE dopc.counter_name = 'Batch Requests/sec' ; + + + + + + + +SELECT p.[Name], + soh.OrderDate, + soh.AccountNumber, + sod.OrderQty, + sod.UnitPrice +FROM Sales.SalesOrderHeader AS soh +JOIN Sales.SalesOrderDetail AS sod + ON soh.SalesOrderID = sod.SalesOrderID +JOIN Production.Product AS p + ON sod.ProductID = p.ProductID +WHERE p.[Name] LIKE 'LL%' + AND soh.OrderDate BETWEEN '1/1/2008' AND '1/6/2008' ; + + + + + + + +SELECT p.[Name], + soh.OrderDate, + soh.AccountNumber, + sod.OrderQty, + sod.UnitPrice +FROM Sales.SalesOrderHeader AS soh +JOIN Sales.SalesOrderDetail AS sod + ON soh.SalesOrderID = sod.SalesOrderID +JOIN Production.Product AS p + ON sod.ProductID = p.ProductID +WHERE p.[Name] LIKE 'LL%' + AND soh.OrderDate BETWEEN '1/1/2008' AND '1/6/2008' ; + + + + + + + +CREATE FUNCTION GovernorClassifier () +RETURNS SYSNAME + WITH SCHEMABINDING +AS +BEGIN + DECLARE @GroupName AS SYSNAME ; + IF (APP_NAME() LIKE '%MANAGEMENT STUDIO%') + SET @GroupName = 'MyWorkLoad' ; + RETURN @GroupName ; +END +GO + + + + +CREATE TABLE dbo.MyTable + (Col1 INT NOT NULL, + Col2 NVARCHAR(50) NULL + ) + WITH ( + DATA_COMPRESSION = PAGE) ; + + + + + + +CREATE NONCLUSTERED INDEX ix_MyTable1 +ON dbo.MyTable (Col2) +WITH ( DATA_COMPRESSION = ROW ) ; + + + + +SELECT OBJECT_ID() + +SELECT 30.0/(-2.0)/2.0 +SELECT 30.0 / -2.0 / 2.0 + diff --git a/9781430239819/Chapter 14/Ch14.sql b/9781430239819/Chapter 14/Ch14.sql new file mode 100644 index 0000000..c980b64 --- /dev/null +++ b/9781430239819/Chapter 14/Ch14.sql @@ -0,0 +1,58 @@ +USE MASTER +GO +CREATE LOGIN BobLogin WITH PASSWORD='pass@word1' +GO +CREATE DATABASE UsedCars +GO +USE UsedCars +GO +CREATE USER Bob FOR LOGIN BobLogin +GO +CREATE SCHEMA Sales +AUTHORIZATION Bob +GO +CREATE SCHEMA Product +AUTHORIZATION Bob +GO +CREATE TABLE Product.Inventory +(car_id INT NOT NULL PRIMARY KEY, +car_make VARCHAR(50) NOT NULL, +car_model VARCHAR(50) NOT NULL, +car_year SMALLINT NOT NULL) +GO +CREATE TABLE Sales.Orders +(order_id INT NOT NULL PRIMARY KEY, +order_date DATETIME NOT NULL, +order_carsold INT REFERENCES Product.Inventory(car_id), +order_saleprice SMALLMONEY NOT NULL) +GO +INSERT INTO Product.Inventory VALUES (1,'Saab','9-3',1999), +(2,'Ford','Mustang',2003),(3,'Nissan','Pathfinder',2005) +GO + +--Configuring Database Mirroring +BACKUP DATABASE UsedCars FROM DISK='c:\backup\dm\UsedCars.bak' + +RESTORE DATABASE UsedCars FROM DISK='c:\backup\dm\UsedCars.bak' +WITH MOVE 'UsedCars' TO 'C:\data\UsedCarsInst2.mdf', +MOVE 'UsedCars_log' TO 'C:\data\UsedCarsInst2.ldf', +NORECOVERY; + +--Creating an Availability Group +USE MASTER +GO +CREATE DATBASE [DatabaseA] +GO +CREATE DATBASE [DatabaseB] +GO +CREATE DATABASE [DatabaseC] +GO + +USE MASTER +GO +BACKUP DATABASE DatabaseA TO DISK='C:\backup\DatabaseA.bak' +GO +BACKUP DATABASE DatabaseB TO DISK='C:\backup\DatabaseB.bak' +GO +BACKUP DATABASE DatabaseC TO DISK='C:\backup\DatabaseC.bak' +GO diff --git a/9781430239819/Chapter 3/Ch3.sql b/9781430239819/Chapter 3/Ch3.sql new file mode 100644 index 0000000..37496b6 --- /dev/null +++ b/9781430239819/Chapter 3/Ch3.sql @@ -0,0 +1,32 @@ +--If you created the BankOfFees database using SSMS you don't have to issue the CREATE DATABASE statement again +USE MASTER +GO +CREATE DATABASE BankOfFees +GO + + +USE BankOfFees +GO +CREATE TABLE Customers +(customer_id INT NOT NULL, +first_name VARCHAR(50) NOT NULL, +last_name VARCHAR(50) NOT NULL) +GO +INSERT INTO Customers +VALUES (1,'Barack','Obama'), +VALUES (2,'George','Bush'), +VALUES (3,'Bill','Clinton') +GO +SELECT * FROM Customers +GO + +--The JobReports table is used in the PowerShell provider part of the chapter +USE MASTER +GO +CREATE TABLE JobReports +(job_engine CHAR(6), +job_engine_id VARCHAR(50), +job_name VARCHAR(255), +job_last_outcome VARCHAR(50), +report_time datetime DEFAULT GETDATE()) +GO \ No newline at end of file diff --git a/9781430239819/Chapter 3/backup_Products.sql b/9781430239819/Chapter 3/backup_Products.sql new file mode 100644 index 0000000..abdf2b3 --- /dev/null +++ b/9781430239819/Chapter 3/backup_Products.sql @@ -0,0 +1 @@ +BACKUP DATABASE [Products] TO DISK='D:\SQLServer\Backups\Products.bak' \ No newline at end of file diff --git a/9781430239819/Chapter 3/backup_ReportServer.sql b/9781430239819/Chapter 3/backup_ReportServer.sql new file mode 100644 index 0000000..52fe91b --- /dev/null +++ b/9781430239819/Chapter 3/backup_ReportServer.sql @@ -0,0 +1 @@ +BACKUP DATABASE [ReportServer] TO DISK='C:\backups\ReportServer.bak' \ No newline at end of file diff --git a/9781430239819/Chapter 3/backup_database_generic.sql b/9781430239819/Chapter 3/backup_database_generic.sql new file mode 100644 index 0000000..ee24a29 --- /dev/null +++ b/9781430239819/Chapter 3/backup_database_generic.sql @@ -0,0 +1,2 @@ +:CONNECT $(myConnection) +BACKUP DATABASE $(myDatabase) TO DISK='C:\backups\$(myDatabase).bak' diff --git a/9781430239819/Chapter 3/backup_database_main.sql b/9781430239819/Chapter 3/backup_database_main.sql new file mode 100644 index 0000000..dda8fd6 --- /dev/null +++ b/9781430239819/Chapter 3/backup_database_main.sql @@ -0,0 +1,6 @@ +:SETVAR myConnection . +:SETVAR myDatabase ReportServer + +:R "backup_database_generic.sql" + +GO diff --git a/9781430239819/Chapter 3/backup_databases.sql b/9781430239819/Chapter 3/backup_databases.sql new file mode 100644 index 0000000..12e4b37 --- /dev/null +++ b/9781430239819/Chapter 3/backup_databases.sql @@ -0,0 +1,11 @@ +--Make a connection to SERVERONE using Windows Authentication +:CONNECT SERVERONE –E +--Issue a backup database command for ReportServer +BACKUP DATABASE [ReportServer] TO DISK='C:\backups\ReportServer.bak' +GO + +--Make a connection to SERVERTWO using Windows Authentication +:CONNECT SERVERTWO –E +--Issue a backup database command for Products database +BACKUP DATABASE [Products] TO DISK='D:\SQLServer\Backups\Products.bak' +GO diff --git a/9781430239819/Chapter 3/wmiquery.ps1 b/9781430239819/Chapter 3/wmiquery.ps1 new file mode 100644 index 0000000..fbde923 --- /dev/null +++ b/9781430239819/Chapter 3/wmiquery.ps1 @@ -0,0 +1,33 @@ +#Use WMI to obtain the AT Scheduler job list +$colItems = get-wmiobject -class "Win32_ScheduledJob" +-namespace "root\CIMV2" -computername "." + +foreach ($objItem in $colItems) +{ +$JobId = $objItem.JobID +$JobStatus = $objItem.JobStatus +$JobName = $objItem.Command + +#Use the SQL Provider Invoke-SqlCmd cmdlet to insert our +## result into the JobReports table +Invoke-SqlCmd -Query "INSERT INTO master..JobReports +(job_engine, job_engine_id, job_name, job_last_outcome) + VALUES('NT','$JobId','$JobName','$JobStatus')" +} + +#Now let's obtain the job listing from the JobServer object +#REPLACE the with your own server name! +Set-Location "SQL:\\default\JobServer" + +$jobItems = get-childitem "Jobs" + +foreach ($objItem in $jobItems) +{ +$JobId = $objItem.JobID +$JobStatus = $objItem.LastRunOutcome +$JobName = $objItem.Name + +Invoke-SqlCmd -Query "INSERT INTO master..JobReports +(job_engine, job_engine_id, job_name, job_last_outcome) + VALUES('AGENT','$JobId','$JobName','$JobStatus')" +} diff --git a/9781430239819/Chapter 5/Code5-1.sql b/9781430239819/Chapter 5/Code5-1.sql new file mode 100644 index 0000000..c95a32f --- /dev/null +++ b/9781430239819/Chapter 5/Code5-1.sql @@ -0,0 +1,207 @@ +CREATE DATABASE [SmartCommunityBank] + CONTAINMENT = NONE + ON PRIMARY +( NAME = N'SmartCommunityBank', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SmartCommunityBank.mdf' , SIZE = 4096KB , FILEGROWTH = 1024KB ) + LOG ON +( NAME = N'SmartCommunityBank_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SmartCommunityBank_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) +GO +ALTER DATABASE [SmartCommunityBank] SET COMPATIBILITY_LEVEL = 110 +GO +ALTER DATABASE [SmartCommunityBank] SET ANSI_NULL_DEFAULT OFF +GO +ALTER DATABASE [SmartCommunityBank] SET ANSI_NULLS OFF +GO +ALTER DATABASE [SmartCommunityBank] SET ANSI_PADDING OFF +GO +ALTER DATABASE [SmartCommunityBank] SET ANSI_WARNINGS OFF +GO +ALTER DATABASE [SmartCommunityBank] SET ARITHABORT OFF +GO +ALTER DATABASE [SmartCommunityBank] SET AUTO_CLOSE OFF +GO +ALTER DATABASE [SmartCommunityBank] SET AUTO_CREATE_STATISTICS ON +GO +ALTER DATABASE [SmartCommunityBank] SET AUTO_SHRINK OFF +GO +ALTER DATABASE [SmartCommunityBank] SET AUTO_UPDATE_STATISTICS ON +GO +ALTER DATABASE [SmartCommunityBank] SET CURSOR_CLOSE_ON_COMMIT OFF +GO +ALTER DATABASE [SmartCommunityBank] SET CURSOR_DEFAULT GLOBAL +GO +ALTER DATABASE [SmartCommunityBank] SET CONCAT_NULL_YIELDS_NULL OFF +GO +ALTER DATABASE [SmartCommunityBank] SET NUMERIC_ROUNDABORT OFF +GO +ALTER DATABASE [SmartCommunityBank] SET QUOTED_IDENTIFIER OFF +GO +ALTER DATABASE [SmartCommunityBank] SET RECURSIVE_TRIGGERS OFF +GO +ALTER DATABASE [SmartCommunityBank] SET DISABLE_BROKER +GO +ALTER DATABASE [SmartCommunityBank] SET AUTO_UPDATE_STATISTICS_ASYNC OFF +GO +ALTER DATABASE [SmartCommunityBank] SET DATE_CORRELATION_OPTIMIZATION OFF +GO +ALTER DATABASE [SmartCommunityBank] SET PARAMETERIZATION SIMPLE +GO +ALTER DATABASE [SmartCommunityBank] SET READ_COMMITTED_SNAPSHOT OFF +GO +ALTER DATABASE [SmartCommunityBank] SET READ_WRITE +GO +ALTER DATABASE [SmartCommunityBank] SET RECOVERY FULL +GO +ALTER DATABASE [SmartCommunityBank] SET MULTI_USER +GO +ALTER DATABASE [SmartCommunityBank] SET PAGE_VERIFY CHECKSUM +GO +ALTER DATABASE [SmartCommunityBank] SET TARGET_RECOVERY_TIME = 0 SECONDS +GO +USE [SmartCommunityBank] +GO +IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [SmartCommunityBank] MODIFY FILEGROUP [PRIMARY] DEFAULT +GO + +USE [master] +GO + +CREATE DATABASE [VetClinic] +GO + +USE [master] +GO + +ALTER DATABASE VetClinic +SET RECOVERY FULL +GO + +USE [master] +GO + +CREATE LOGIN ReceptionistUser WITH PASSWORD='hj2(*h2hBM!@jsx' +GO + +USE [VetClinic] +GO + +CREATE TABLE [Pets] +(pet_id INT PRIMARY KEY, +pet_name VARCHAR(50) NOT NULL, +pet_weight INT NOT NULL) +GO + +USE [VetClinic] +GO + +INSERT INTO Pets VALUES + (1,'Zeus',185), +(2,'Lady',155), +(3,'Deno',50) +GO + +SELECT * FROM Pets +GO + +USE [VetClinic] +GO + +GRANT SELECT ON Pets TO ReceptionistUser +GO + +USE [VetClinic] +GO + +/****** Object: Table [dbo].[Store Location] ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[Store Location]( + [store_id] [int] NOT NULL, + [store_zip_code] [int] NULL, + CONSTRAINT [PK_Store Location] PRIMARY KEY CLUSTERED +( + [store_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, +IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, +ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO + +ALTER TABLE [Store Location] + ADD [Store Manager] VARCHAR(50) + +GO + +ALTER TABLE Pets WITH CHECK + ADD CONSTRAINT [CK_Pets] + CHECK (([pet_weight]>0 AND [pet_weight]<1000)) +GO + +CREATE TABLE Medication +(med_id INT PRIMARY KEY, +med_name VARCHAR(50) CONSTRAINT u_med_name UNIQUE, +med_supplier VARCHAR(50) NOT NULL) +GO + +INSERT INTO Medication VALUES (1, 'Cyclosporine 5mg', 'Generic Drugs Inc') +INSERT INTO Medication VALUES (2, 'Cyclosporine 5mg', 'ACME Vet Drugs') + +CREATE TABLE [Owners] +(owner_id INT PRIMARY KEY, +pet_id INT REFERENCES Pets(pet_id), +owner_name VARCHAR(50) NOT NULL) +GO + +INSERT INTO Owners VALUES (1,20,'Julie') +GO + +CREATE TABLE Customers +(customer_id INT PRIMARY KEY, +customer_name NVARCHAR(50) NOT NULL) +GO + +CREATE TABLE Accounts +(customer_id INT REFERENCES Customers(customer_id), +account_balance MONEY) +GO + +DROP TABLE Accounts +GO + +DROP TABLE Customers +GO + +CREATE TABLE Products +(product_id INT IDENTITY(1,1) NOT NULL, +product_price DECIMAL(9,2) NOT NULL) +GO + +DECLARE @i INT; +DECLARE @price DECIMAL(9,2); + +SET @i=0; +WHILE (@i<100000) +BEGIN +SET @price= ROUND((RAND()*1000),2) + +INSERT INTO Products(product_price) VALUES (@price) + +SET @i=@i+1 + +END +GO + +SELECT COUNT(product_id) FROM Products WHERE +product_price BETWEEN 400 AND 700 +GO + +CREATE CLUSTERED INDEX CI_Price ON Products(product_price) +GO + +SELECT COUNT(product_id) FROM Products WHERE +product_price BETWEEN 400 AND 700 +GO \ No newline at end of file diff --git a/9781430239819/Chapter 6/Code6-1.sql b/9781430239819/Chapter 6/Code6-1.sql new file mode 100644 index 0000000..d0eec27 --- /dev/null +++ b/9781430239819/Chapter 6/Code6-1.sql @@ -0,0 +1,205 @@ +USE [master] +GO + +CREATE DATABASE [VetClinic] +GO + +USE [master] +GO + +ALTER DATABASE VetClinic +SET RECOVERY FULL +GO + +USE [VetClinic] +GO + +CREATE TABLE [Pets] +(pet_id INT PRIMARY KEY, +pet_name VARCHAR(50) NOT NULL, +pet_weight INT NULL) +GO + +ALTER TABLE [Pets] +ADD [MicroChipID] VARCHAR(100) NOT NULL +CONSTRAINT [MicroChip_Unique] UNIQUE +GO + +USE [VetClinic] +GO + +INSERT INTO Pets +VALUES(1,'Zeus',185,'398BF49'), +(2,'Lady',155,'191ABBC'), +(3,'Deno',50,'790AG441'), +(4,'Rex',44,'CDD81322'), +(5,'Rover',15,'A8719841') +GO + +CREATE TABLE [Owners] +(owner_id INT PRIMARY KEY, +pet_id INT REFERENCES Pets(pet_id), +owner_name VARCHAR(50) NOT NULL) +GO + +INSERT INTO Owners VALUES(1,2,'Bryan'), +(2,3,'Rob'), +(3,1,'Rob') + +CREATE TABLE MicroChips +(MicroChipID VARCHAR(100) UNIQUE) +GO + +INSERT INTO MicroChips VALUES('34BA123') +GO +DECLARE @name VARCHAR(20) +SET @name='Rob' +SELECT DATALENGTH(@name) +GO + +SELECT pet_name, pet_weight FROM Pets +GO +SELECT * FROM Pets +GO +SELECT TOP 3 * FROM Pets ORDER BY pet_weight ASC +GO +SELECT pet_name,owner_name FROM Pets + INNER JOIN Owners + ON Pets.pet_id=Owners.pet_id +GO +SELECT pet_name,owner_name FROM Pets + LEFT OUTER JOIN Owners + ON Pets.pet_id=Owners.pet_id +GO +INSERT INTO Pets +VALUES(6,'Roscoe',55,'F5CAA29'), +(7,'Missy',67,'B7C2A59'), +(8,'George',12,'AA63BC5'), +(9,'Spot',34,'CC8A674') + +SELECT pet_name,pet_weight FROM Pets + ORDER BY pet_weight DESC + OFFSET (0) ROWS FETCH NEXT 3 ROWS ONLY; + + SELECT TOP 3 pet_name,pet_weight From Pets order by pet_weight DESC + + SELECT pet_name,pet_weight FROM Pets + ORDER BY pet_weight DESC + OFFSET (3) ROWS FETCH NEXT 3 ROWS ONLY; + +INSERT INTO Pets (pet_id, pet_name, pet_weight, MicroChipID) + VALUES (10,'Roxy',7,'1A8AF59'), +(11,'Champ',95,'81CB910'), +(12,'Penny',80,'C710A6B') + + +CREATE TABLE PetFood +(pet_food_id int IDENTITY(1,1), + food_name varchar (20)); + + INSERT INTO PetFood VALUES('Lamb and Rice'),('Chicken'),('Corn') + + SELECT * From PetFood + + CREATE SEQUENCE PetFoodIDSequence + AS INT + START WITH 1 + INCREMENT BY 1 + +DROP TABLE PetFood +GO +CREATE TABLE PetFood +(pet_food_id int DEFAULT (NEXT VALUE FOR PetFoodIDSequence), + food_name varchar (20)); +GO + + INSERT INTO PetFood (food_name) VALUES('Lamb and Rice'),('Chicken'),('Corn') + GO + SELECT * from PetFood + GO +BEGIN TRANSACTION +UPDATE Pets SET pet_name='Lady' WHERE pet_id=3 +UPDATE Pets SET pet_name='Deno' WHERE pet_id=2 +COMMIT +BEGIN TRANSACTION +DELETE FROM Pets +ROLLBACK +GO +BEGIN TRANSACTION +UPDATE Pets SET pet_name='Big Boy' WHERE pet_id=5 +SELECT pet_name FROM Pets WHERE pet_id=5 +GO +--User2 on a different connection issues +SELECT pet_name FROM Pets WHERE pet_id=5 +GO +SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED +GO +SELECT pet_name FROM Pets WHERE pet_id=5 +GO +CREATE PROCEDURE GetID +@name VARCHAR(50) +AS +BEGIN +SELECT MicroChipID FROM Pets WHERE pet_name=@name +END +EXEC GetID 'Roxy' +GO +USE [VetClinic] +GO +/** Object: StoredProcedure [dbo].[GetID] Script Date: 04/29/2009 **/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +ALTER PROCEDURE [dbo].[GetID] +@name VARCHAR(50) +AS +BEGIN +SELECT MicroChipID FROM Pets WHERE pet_name=@name +END +GO +CREATE FUNCTION GiantPets (@minWeight INTEGER) +RETURNS @retGiantPetsTable TABLE +( +pet_name VARCHAR(50) NOT NULL, +pet_weight INT NOT NULL, +owner_name VARCHAR(50) NOT NULL +) +AS +BEGIN + INSERT @retGiantPetsTable + SELECT p.pet_name, p.pet_weight,o.owner_name + FROM Pets p, Owners o + WHERE p.pet_id=o.pet_id AND p.pet_weight > @minWeight + + RETURN +END +GO +SELECT * FROM GiantPets(50) +GO +USE [VetClinic] +GO +CREATE TRIGGER ValidateMicroChip +ON Pets +FOR INSERT +AS + +IF EXISTS( +SELECT MicroChipID FROM MicroChips +WHERE MicroChipID IN ( +SELECT MicroChipID FROM inserted) +) + +RAISERROR ('The chip was found!', 16, 1) +ELSE + +BEGIN + RAISERROR ('The chip was NOT found!', 16, 1) + ROLLBACK +END + +GO +INSERT INTO Pets VALUES (8,'Sushi',5,'0034DDA') +GO + + diff --git a/9781430239819/Chapter 7/Code7-1.sql b/9781430239819/Chapter 7/Code7-1.sql new file mode 100644 index 0000000..ce486c8 --- /dev/null +++ b/9781430239819/Chapter 7/Code7-1.sql @@ -0,0 +1,35 @@ +USE [model] +GO + +CREATE TABLE Sales +(i INT) +GO + +USE [master] +GO + +CREATE DATABASE SmartSalesDB +GO +USE [SmartSalesDB] +GO + +SELECT name,type_desc FROM sys.tables +GO +CREATE DATABASE [Sales] ON PRIMARY +( NAME = N'Sales', FILENAME = N'C:\DATA\Sales.mdf' ), + FILEGROUP [OlderSales] +( NAME = N'Sales2', FILENAME = N'D:\DATA\Sales2.ndf' ) + LOG ON +( NAME = N'Sales_log', FILENAME = N'M:\LOG\Sales_log.ldf' ) +GO +CREATE TABLE Customers +(customer_id INT PRIMARY KEY) +ON [OlderSales] +ALTER DATABASE [SmartSalesDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE +GO +ALTER DATABASE [SmartSalesDB] SET RESTRICTED_USER +GO +ALTER DATABASE [SmartSalesDB] SET MULTI_USER +GO +ALTER DATABASE [SmartSalesDB] SET OFFLINE +GO diff --git a/9781430239819/Chapter 8/Chapter8.sql b/9781430239819/Chapter 8/Chapter8.sql new file mode 100644 index 0000000..a9a7ef2 --- /dev/null +++ b/9781430239819/Chapter 8/Chapter8.sql @@ -0,0 +1,198 @@ +BACKUP DATABASE AdventureWorks2012 +TO DISK = 'c:\data\AdventureWorks2012.bak'; + + +EXEC sp_addumpdevice + @devtype = 'disk', + @logicalname = 'MyBackupDevice', + @physicalname = 'c:\data\AdventureWorks2008.bak'; + + + +BACKUP DATABASE AdventureWorks2012 +TO MyBackupDevice; + + + +DECLARE @BackupLocation NVARCHAR(100) ; +SET @BackupLocation = 'c:\data\AdventureWorks2012_' + + CONVERT(NVARCHAR(8), GETDATE(), 112) + '.bak' ; +BACKUP DATABASE AdventureWorks2012 +TO DISK = @BackupLocation +WITH INIT ; + + + + +DECLARE @BackupLocation NVARCHAR(100) ; +SET @BackupLocation = 'c:\data\AdventureWorks2012_' + + CONVERT(NVARCHAR(8), GETDATE(), 112) + '.bak' ; +BACKUP DATABASE AdventureWorks2012 +TO DISK = @BackupLocation +WITH INIT, CHECKSUM ; + + + +DECLARE @BackupLocation NVARCHAR(100) ; +SET @BackupLocation = 'c:\data\AdventureWorks2012_' + + CONVERT(NVARCHAR(8), GETDATE(), 112) + '.bak' ; +BACKUP DATABASE AdventureWorks2012 +TO DISK = @BackupLocation +WITH INIT,CHECKSUM, COMPRESSION, FORMAT ; + + + +DECLARE @BackupLocation NVARCHAR(100); +SET @BackupLocation = 'c:\data\AdventureWorks2012_' + +CONVERT(NVARCHAR(8),GETDATE(),112) + '_diff.bak'; +BACKUP DATABASE AdventureWorks2012 +TO DISK = @BackupLocation +WITH INIT, CHECKSUM, DIFFERENTIAL; + + + + + +SELECT df.name +FROM sys.database_files AS df; + + + +ALTER DATABASE AdventureWorks2012 +SET RECOVERY FULL ; + + + + + +BACKUP DATABASE AdventureWorks2012 +FILE = 'AdventureWorks2012_DATA' +TO DISK = 'c:\data\AdventureWorks2012_DATA.bak' +WITH INIT ; + + + + + +BACKUP DATABASE AdventureWorks2012 +FILEGROUP = 'Primary' +TO DISK = 'c:\data\AdventureWorks2012_Primary.bak' +WITH INIT; + + + + + +BACKUP LOG AdventureWorks2012 +TO DISK = 'c:\data\AdventureWorks2012_log.bak' ; + + + + + +BACKUP DATABASE AdventureWorks2012 +TO DISK = 'c:\data\AdventureWorks2012_Copy.bak' +WITH COPY_ONLY ; + + + + +--very simple query to back up user databases +DECLARE @backupscript NVARCHAR(MAX), + @dbname NVARCHAR(100), + @dbpath NVARCHAR(100) ; + +DECLARE DBList CURSOR FAST_FORWARD +FOR +SELECT name +FROM sys.databases +WHERE database_id BETWEEN 5 AND 32767 + AND state = 0 ; + +OPEN DBList ; + +FETCH NEXT FROM DBList INTO @dbname ; + +WHILE @@FETCH_STATUS = 0 + BEGIN + SET @dbpath = 'C:\DATA' + @dbname + '_' + CONVERT(NVARCHAR, GETDATE(), 112) + + '.bak'' WITH INIT' ; + BACKUP DATABASE @dbname TO DISK = @dbpath WITH INIT, CHECKSUM ; + FETCH NEXT FROM DBList INTO @dbname ; + END + +CLOSE DBList ; +DEALLOCATE DBList ; + + + + + + +USE master ; +GO +CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Chapter8Backup' ; +GO +CREATE CERTIFICATE Chapter8Certificate WITH SUBJECT = 'Chapter 8 Certificate' ; +GO +USE EncryptionTest ; +GO +CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER + CERTIFICATE Chapter8Certificate ; +GO +ALTER DATABASE EncryptionTest +SET ENCRYPTION ON ; + + + + +USE [master] ; +GO +BACKUP CERTIFICATE Chapter8Certificate TO FILE = +'c:\data\Chapter8Certificate' +WITH PRIVATE KEY (FILE = 'c:\data\pkChapter8Certificate', +ENCRYPTION BY PASSWORD = 'Chapter8Backup') ; + + + + + +BACKUP DATABASE EncryptionTest +TO DISK = 'c:\data\EncryptionTest.bak' ; + + + + + + + +EXEC sp_configure + 'backup compression default', + '1' ; +RECONFIGURE WITH OVERRIDE ; + + + + + + +BACKUP DATABASE AdventureWorks2012 +TO DISK = 'c:\data\AdventureWorks2012_uncompressed.bak' +WITH INIT, NO_COMPRESSION ; + + + + + + +BACKUP DATABASE AdventureWorks2012 +TO DISK = 'c:\data\AdventureWorks2012_compressed.bak' +WITH INIT, COMPRESSION ; + + + + + + + + diff --git a/9781430239819/Chapter 9/Chapter9.sql b/9781430239819/Chapter 9/Chapter9.sql new file mode 100644 index 0000000..e37d96e --- /dev/null +++ b/9781430239819/Chapter 9/Chapter9.sql @@ -0,0 +1,295 @@ +BACKUP DATABASE RestoreTest +TO DISK = 'c:\data\RestoreTest.bak' ; + + + +USE RestoreTest ; +CREATE TABLE dbo.Table1 (Id INT, Val NVARCHAR(50)) ; + + + + +RESTORE DATABASE RestoreTest +FROM DISK = 'c:\data\restoretest.bak' +WITH REPLACE ; + + + + + +RESTORE DATABASE WholeNewRestore +FROM DISK = 'c:\data\restoretest.bak' ; + + + + + + + +RESTORE DATABASE WholeNewRestore +FROM DISK = 'c:\data\restoretest.bak' +WITH MOVE 'RestoreTest' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.RANDORI\MSSQL\DATA\WholeNewRestore.mdf' +,MOVE 'RestoreTest_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.RANDORI\MSSQL\DATA\WholeNewRestore_Log.ldf' ; + + + + + +RESTORE FILELISTONLY +FROM DISK = 'c:\data\restoretest.bak'; + + + + + + + +RESTORE HEADERONLY +FROM DISK = 'c:\data\restoretest.bak'; + + + + + + +USE MASTER; +DROP DATABASE WholeNewRestore; +DROP DATABASE RestoreTest; + + + + +USE DiffTest ; +CREATE TABLE dbo.DataChanges + (DataChangesId INT IDENTITY(1, 1) + NOT NULL, + DataValue NVARCHAR(50) NOT NULL, + UpdateDate DATETIME NOT NULL, + CONSTRAINT PK_DataChanges PRIMARY KEY CLUSTERED (DataChangesId) + ) ; + +INSERT INTO dbo.DataChanges + (DataValue, UpdateDate) +VALUES (N'First Row', GETDATE()), + (N'Second Row', GETDATE()), + (N'Third Row', GETDATE()) ; + +BACKUP DATABASE DiffTest TO DISK = 'c:\data\difftest.bak' ; + +INSERT INTO dbo.DataChanges + (DataValue, UpdateDate) +VALUES (N'Fourth Row', GETDATE()), + (N'Fifth Row', GETDATE()) ; + +BACKUP DATABASE DiffTest +TO DISK = 'c:\data\difftest_diff.bak' +WITH DIFFERENTIAL ; + +DELETE dbo.DataChanges +WHERE DataChangesId = 3 ; + + + + + +RESTORE DATABASE DiffTest +FROM DISK = 'c:\data\difftest.bak' +WITH REPLACE, NORECOVERY ; + + + + + + + +RESTORE DATABASE DiffTest +FROM DISK = 'c:\data\difftest_diff.bak'; + + + + + +USE master ; +DROP DATABASE DiffTest ; + + + + +CREATE DATABASE LogTest ; +GO +ALTER DATABASE LogTest SET RECOVERY FULL ; +GO + +USE LogTest ; + +CREATE TABLE BusinessData + (BusinessDataId INT NOT NULL + IDENTITY(1, 1), + BusinessValue NVARCHAR(50), + UpdateDate DATETIME, + CONSTRAINT pk_BusinessData PRIMARY KEY CLUSTERED (BusinessDataID) + ) ; + +INSERT INTO BusinessData + (BusinessValue, UpdateDate) +VALUES ('Row 1', GETDATE()), + ('Row 2', GETDATE()) ; + +--Full backup +BACKUP DATABASE LogTest +TO DISK = 'c:\data\logtest.bak' + +--create more business data +INSERT INTO BusinessData + (BusinessValue, UpdateDate) +VALUES ('Row 3', GETDATE()), + ('Row 4', GETDATE()) ; + +--First Log Backup +BACKUP LOG LogTest +TO DISK = 'c:\data\logtest_log1.bak' ; + +INSERT INTO BusinessData + (BusinessValue, UpdateDate) +VALUES ('Row 5', GETDATE()), + ('Row 6', GETDATE()) ; + +--Second Log Backup +BACKUP LOG LogTest +TO DISK = 'c:\data\logtest_log2.bak' ; + + +INSERT INTO BusinessData + (BusinessValue, UpdateDate) +VALUES ('Row 7', GETDATE()), + ('Row 8', GETDATE()) ; +SELECT GETDATE(); + +--pause for two minutes +WAITFOR DELAY '00:02' ; + +DELETE BusinessData ; + +--Final Log Backup, after the "accident" +BACKUP LOG LogTest +TO DISK = 'c:\data\logtest_log3.bak' ; + GO + USE master; + + + + + + +RESTORE DATABASE LogTest +FROM DISK = 'c:\data\logtest.bak' +WITH REPLACE, NORECOVERY ; + + + + + + + +RESTORE LOG LogTest +FROM DISK = 'c:\data\logtest_log1.bak' +WITH NORECOVERY; + +RESTORE LOG LogTest +FROM DISK = 'c:\data\logtest_log2.bak' +WITH NORECOVERY; + +RESTORE LOG LogTest +FROM DISK = 'c:\data\logtest_log3.bak' +WITH STOPAT = 'Nov 25 2011 17:49:30'; + + + + + + + + +SELECT * FROM dbo.BusinessData AS bd; + + + + + +USE MASTER; +DROP DATABASE LogTest; + + + + + + + + +CREATE DATABASE FileTest ; + +ALTER DATABASE FileTest +ADD FILEGROUP FILETESTFG ; + +ALTER DATABASE FileTest +ADD FILE ( +NAME = FileTest2, +FILENAME = 'c:\data\filetest2.ndf', +SIZE = 5MB, +MAXSIZE = 100MB, +FILEGROWTH = 5MB +) TO FILEGROUP FileTestFG ; +GO + +USE FileTest ; + +CREATE TABLE dbo.ft1 + (ID INT IDENTITY(1, 1) + NOT NULL, + Val NVARCHAR(50) NOT NULL + ) +ON FileTestFG ; + +INSERT INTO dbo.ft1 + (Val) +VALUES (N'Test') ; + +BACKUP DATABASE FileTest +FILEGROUP = 'FileTestFG' +TO DISK = 'c:\data\FileTest_FileTestFG.bak' +WITH INIT ; + +BACKUP LOG FileTest +TO DISK = 'c:\data\FileTest_Log.bak' +WITH INIT ; + + + + + + +RESTORE DATABASE FileTest +FILEGROUP = 'FileTestFG' +FROM DISK = 'c:\data\FileTest_FileTestFG.bak' +WITH NORECOVERY ; + +RESTORE LOG FileTest +FROM DISK = 'c:\data\FileTest_Log.bak' +WITH RECOVERY ; + + + + + + + +RESTORE VERIFYONLY FROM DISK = 'somepath' + + + + + + + + + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..6c074fb --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +Freeware License, some rights reserved + +Copyright (c) 2012 Robert Walters and Grant Fritchey + +Permission is hereby granted, free of charge, to anyone obtaining a copy +of this software and associated documentation files (the "Software"), +to work with the Software within the limits of freeware distribution and fair use. +This includes the rights to use, copy, and modify the Software for personal use. +Users are also allowed and encouraged to submit corrections and modifications +to the Software for the benefit of other users. + +It is not allowed to reuse, modify, or redistribute the Software for +commercial use in any way, or for a user’s educational materials such as books +or blog articles without prior permission from the copyright holder. + +The above copyright notice and this permission notice need to be included +in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..279d4d8 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +#Apress Source Code + +This repository accompanies [*Beginning SQL Server 2012 Administration*](http://www.apress.com/9781430239819) by Robert Walters and Grant Fritchey (Apress, 2012). + +![Cover image](9781430239819.jpg) + +Download the files as a zip using the green button, or clone the repository to your machine using Git. + +##Releases + +Release v1.0 corresponds to the code in the published book, without corrections or updates. + +##Contributions + +See the file Contributing.md for more information on how you can contribute to this repository. diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..f6005ad --- /dev/null +++ b/contributing.md @@ -0,0 +1,14 @@ +# Contributing to Apress Source Code + +Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers. + +## How to Contribute + +1. Make sure you have a GitHub account. +2. Fork the repository for the relevant book. +3. Create a new branch on which to make your change, e.g. +`git checkout -b my_code_contribution` +4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted. +5. Submit a pull request. + +Thank you for your contribution! \ No newline at end of file