visual studio for sql developers - andrey...

35
Visual Studio for SQL Developers September 1, 2015 Copenhagen, Denmark Andrey Zavadskiy, Krasnodar, Russia MCSE/MCSD/MCT

Upload: trinhdang

Post on 07-Apr-2019

245 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

Visual Studio

for SQL Developers

September 1, 2015

Copenhagen, Denmark

Andrey Zavadskiy, Krasnodar, Russia

MCSE/MCSD/MCT

Page 2: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

About me

Solutions architect, SQL & .NET

developer

20 years in IT industry

Worked with SQL Server since

7.0 back in 2001

Developed in C#, ASP.NET, MVC,

JavaScript, SharePoint

MCDBA, MCSE, MCSD

MCT since 2008

PASS speaker

https://www.facebook.com/andrey.k.zavadskiy

@AndreyZavadskiy

https://www.linkedin.com/in/zavadskiy

http://andreyzavadskiy.com

Page 3: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

3

About Krasnodar

Regional center

Was founded in 1793, renamed in 1920

Original name Yekaterinodar – Catherine’s gift

Distances: Istanbul 929 km

Moscow 1196 km

Warsaw 1541 km

Copenhagen 2200 km

Brussels 2640 km

Paris 2793 km

Lisbon 3995 km

Page 4: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

4

Session Goal

Provide a practical overview of how to use SQL

Server Data Tools to create, test, deploy and

debug a database project

Page 5: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

5

Contents

Online database development

Offline database development

Deployment

Debugging

Database unit testing

Additional tools

Page 6: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

6

Concept of SQL Server Data Tools

Focusing on the final version of code rather

then on many ALTER iterations

The unique IDE for all database developer’s

needs Based on Visual Studio

Working with connected databases (like SQL Server

Management Studio)

Project approach to code writing

Debugging and unit testing

Version control (via integration with Team Foundation

Server)

Page 7: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

7

Online Database Development

Available through SQL Server Object

Explorer

Functions are similar to SQL Server

Management Studio

Tools: Table Designer

Code Editor

Visual Data Editor

Query Window

Scripting capabilities

Page 8: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

8

DEMO

Working with connected database

Page 9: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

9

Offline Database Development

Creating a database project

Creating database objects Import from existing database

Creating from scratch

Project properties

Page 10: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

10

DEMO

Creating a database project

Page 11: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

11

Database Deployment

Deployment in the connected database Publishes the script (CREATE)

Compares against the target database

Creates a change script (ALTER)

Runs the change script on the target database

Deployment in the disconnected database Creates a DACPAC package

Distribute and publish DACPAC

Publishing profiles and settings

Page 12: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

12

DEMO

Publishing a database

Page 13: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

13

Deployment Scripts For Inserting Data

Creating scripts Based on the existing data

From scratch

Various types of scripts T-SQL script

Pre-deployment

Post-deployment

Page 14: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

14

DEMO

Scripting data for deployment

Page 15: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

15

Multiple Databases

Using objects from another database on: Same instance

Another instance – needs linked server

Addressing remote database object:

4-part naming convention

Synonyms

SSDT knows nothing about remote database objects

Deployment to multiple databases Impossible, can be implemented with multiple projects and

multiple deployments

Page 16: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

16

DEMO

Using data from other databases

Page 17: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

17

Debugging

Only in connected environment

Breakpoint can be set with SQL Server Object Explorer

Two modes:

1. Execute query with debugger Similar to SQL Server Management Studio

2. Classic Visual Studio debugging with F5 Has a separate connection to SQL Server/database

Needs a project startup script

Page 18: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

18

DEMO

Debugging T-SQL code

Page 19: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

19

Database Unit Testing

Unit test Is performed on a smallest piece of testable code

Isolated from the other pieces of code

Should be repeatable

Gives the answer to only one question

Usually created by developers

Page 20: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

20

What for?

Confidence in your code

Confirms that product requirements are

working

Early error checking of code

Instant visual feedback on errors

Helps to check subsequent changes in code

Provides documentation for other developers

Page 21: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

21

Where are the bugs?

Invoked unit of code

Unit of code Test

Dependency

Page 22: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

22

What can be tested?

Meta-data Table structure, field type and length

Existence of objects

Constraints CHECK, DEFAULT, PRIMARY KEY, FOREIGN KEY, UNIQUE

T-SQL code Stored procedures, Functions, Triggers

Security permissions

Execution time

Page 23: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

23

Data that can be tested

Scalar values Normal values

Errors (incorrect values)

Very big values

NULL

Table values Rowset

Empty rowset

Very big rowset

Metadata

Page 24: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

24

DEMO

Creating a database unit test project

Unit Test Project Internals

Page 25: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

25

Unit Test Flow

Test initialize

Unit test(s) Pre-test

Test

Post-test

Test cleanup

Page 26: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

26

Unit Test Features

Can have more than one test condition

Can handle exceptions raised in database

Can be run within a transaction

Can use a second connection for pre/post

test phases

Allows to create and use custom test

conditions as Visual Studio extension (dll) How-to: https://msdn.microsoft.com/en-

us/library/jj860449(v=vs.103).aspx

Example: https://ssdtconditions.codeplex.com/

Page 27: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

27

DEMO

Positive test

Negative test

Running test in transaction

Checking metadata

Checking table equality

Page 28: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

28

Debugging in unit tests

Can debug only the T-SQL code to be tested Breakpoint can be set inside the stored procedure, function

or trigger

Can’t debug the T-SQL code of the unit test

itself

Page 29: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

29

DEMO

Debugging a code from within a database

unit test

Page 30: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

30

Additional tools

Comparison tools Only in Professional and Ultimate Editions

Schema compare

Data compare

Needs a key

Code analysis

Refactoring

Page 31: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

31

DEMO

Comparing schemas and data

Page 32: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

32

Summary

SSDT – unique tool for SQL developer

Declarative model of database development

Covers all stages: Create

Debug

Test

Deploy

Page 33: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

33

References

MSDN: SQL Server Data Toolshttps://msdn.microsoft.com/en-

us/library/hh272686(v=vs.103).aspx

SSDT Team Bloghttp://blogs.msdn.com/b/ssdt/

MSDN Forumhttps://social.msdn.microsoft.com/Forums/sqlserver/en-

US/home?forum=ssdt

Page 34: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

Questions?

Page 35: Visual Studio for SQL Developers - Andrey Zavadskiyandreyzavadskiy.com/wp-content/...Visual-Studio-for-SQL-developers...Visual Studio for SQL Developers September 1, 2015 Copenhagen,

Thank you for attending!