Download - 02 TSQL Enhancements
-
7/31/2019 02 TSQL Enhancements
1/73
SQL Server 2008 for DevelopersUTS Short Course
-
7/31/2019 02 TSQL Enhancements
2/73
Loves C# and .NET
Specializes in Application architecture and
design
SQL Performance Tuning andOptimization
Agile, ScrumCertified Scrum Trainer
Technology aficionado Silverlight
ASP.NET
Windows Forms
Eric Phan SA @ SSWw: ericphan.info | e: [email protected] | t: @ericphan
-
7/31/2019 02 TSQL Enhancements
3/73
http://sharepoint.ssw.com.au/Training/UTSSQL/Pages/
Course Timetable
Course Materials
Course Website
http://sharepoint.ssw.com.au/Training/UTSSQL/Pageshttp://sharepoint.ssw.com.au/Training/UTSSQL/Pages -
7/31/2019 02 TSQL Enhancements
4/73
SQL Management Studio
SQL Configuration Manager
Consoles
SQLCMD
PowerShell
SQL Profiler
SQL Database Tuning Advisor
Last Week
-
7/31/2019 02 TSQL Enhancements
5/73
Course Overview
Session Date Time Topic
1Tuesday
06-03-201218:00 - 21:00 SQL Server 2008 Management Studio
2Tuesday
13-03-201218:00 - 21:00 T-SQL Enhancements
3Tuesday
20-03-201218:00 - 21:00 High Availability
4 Tuesday27-03-2012 18:00 - 21:00 CLR Integration
5Tuesday
03-04-201218:00 - 21:00 Full-Text Search
-
7/31/2019 02 TSQL Enhancements
6/73
1. How to setup maintenance plans over night
2. Database encryption
1. Data
2. Source code (Stored procs)
3. Best practices
1. Typical maintenance plans2. Policies
Last Week - Additional
-
7/31/2019 02 TSQL Enhancements
7/73
1. Modify maintenance plan
2. 2nd page in wizard (new plan)
-
7/31/2019 02 TSQL Enhancements
8/73
Encrypting data - Transparent Data Encryption (TDE)
http://msdn.microsoft.com/en-us/library/bb934049.aspx
http://www.acorns.com.au/blog/?p=147
Encrypting Connections to SQL Server
http://msdn.microsoft.com/en-us/library/ms189067.aspx
Encrypting source code
http://www.codeproject.com/KB/database/ProtectSQLCodeObject.aspx
Database encryption
http://sharepoint.ssw.com.au/Training/UTSSQL/http://ola.hallengren.com/?p=147http://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://www.ssw.com.au/ssw/standards/Rules/RulestoBetterSQLServerdatabases.aspxhttp://www.ssw.com.au/ssw/standards/Rules/RulestoBetterSQLServerdatabases.aspxhttp://www.ssw.com.au/ssw/standards/Rules/RulestoBetterSQLServerdatabases.aspxhttp://www.ssw.com.au/ssw/standards/Rules/RulestoBetterSQLServerdatabases.aspxhttp://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://msdn.microsoft.com/en-us/library/bb630263.aspxhttp://ola.hallengren.com/?p=147http://ola.hallengren.com/?p=147http://ola.hallengren.com/?p=147http://sharepoint.ssw.com.au/Training/UTSSQL/http://sharepoint.ssw.com.au/Training/UTSSQL/http://sharepoint.ssw.com.au/Training/UTSSQL/http://sharepoint.ssw.com.au/Training/UTSSQL/http://sharepoint.ssw.com.au/Training/UTSSQL/ -
7/31/2019 02 TSQL Enhancements
9/73
http://ola.hallengren.com/
Steps Backup
Integrity check
Index optimization
Solution used in mission-critical environments in
many organizations.
Best practices - Maintenance
http://www.conceptdevelopment.net/Database/Geoquery/http://msdn.microsoft.com/en-us/library/ms182418.aspxhttp://msdn.microsoft.com/en-us/library/ms182418.aspxhttp://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/ -
7/31/2019 02 TSQL Enhancements
10/73
Security Best Practices
http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.doc
Security Best Practices Checklist
http://technet.microsoft.com/en-us/library/cc966456.aspx
Best practices - Security
http://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://blogs.msdn.com/blogfiles/manisblog/WindowsLiveWriter/SQLServer2008HierarchyID_13519/BF.gifhttp://blogs.msdn.com/blogfiles/manisblog/WindowsLiveWriter/SQLServer2008HierarchyID_13519/BF.gifhttp://blogs.msdn.com/blogfiles/manisblog/WindowsLiveWriter/SQLServer2008HierarchyID_13519/BF.gifhttp://blogs.msdn.com/blogfiles/manisblog/WindowsLiveWriter/SQLServer2008HierarchyID_13519/BF.gifhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.htmlhttp://ola.hallengren.com/Organizations.html -
7/31/2019 02 TSQL Enhancements
11/73
Create a schema called Salary
Create a table called Employees in Schema
Create a user called Manager
Give only manager permission to update/insert/delete in
schema
Create a user called Peter
Give Peter only read to schema (=salary)
Create a user Alice
Deny everything for Alice in Salary
Homework?
-
7/31/2019 02 TSQL Enhancements
12/73
New Data Types
Inline variable assignment
Table Value Parameters
DDL Triggers
CTE (Common Table Expressions)
TOP %, XML Queries
PIVOT/UNPIVOT
ADO.NET
Agenda
-
7/31/2019 02 TSQL Enhancements
13/73
bigint, int, smallint, tinyint
-2^63 ... 2^63-1
0..255
Bit (0 or 1)
decimal = numeric
Exact type
Numbers -10^38 +1 ... 10^38
Money, smallmoney accuracy to a ten-thousandth money unit
Smallmoney = smaller money
Datatypes - Exact Numerics
-
7/31/2019 02 TSQL Enhancements
14/73
Floating point numeric data
float real
Datatypes Approximate Numerics
-
7/31/2019 02 TSQL Enhancements
15/73
char
Fixed length varchar
Variable length
Datatypes - text
-
7/31/2019 02 TSQL Enhancements
16/73
char, varchar, text
Ascii - 1 byte nchar, nvarchar, ntext
Unicode - 2 bytes
binary, varbinary, image
Datatypes - text
-
7/31/2019 02 TSQL Enhancements
17/73
SQL 2008 now has the following data types to represent time:
DateTime SmallDateTime
Date
Time
DateTime2 really a BigDateTime
Min Date is 1st Jan 0000 Max date 31st Dec 9999 Y10K BUG!!
DateTimeOffset
Date and Time
-
7/31/2019 02 TSQL Enhancements
18/73
Date Time details
Data type Format Range AccuracyStorage size(bytes)
User-definedfractional secondprecision
Time zone offset
timehh:mm:ss[.nnnnnnn]
00:00:00.0000000 through23:59:59.9999999
100 nanoseconds 3 to 5 Yes No
date YYYY-MM-DD 0001-01-01 through 9999-12-31
1 day 3 No No
smalldatetimeYYYY-MM-DD
hh:mm:ss
1900-01-01 through 2079-06-
061 minute 4 No No
datetimeYYYY-MM-DD
hh:mm:ss[.nnn]
1753-01-01 through 9999-12-
310.00333 second 8 No No
datetime2
YYYY-MM-DD
hh:mm:ss[.nnnn
nnn]
0001-01-01 00:00:00.0000000
through 9999-12-31
23:59:59.9999999
100 nanoseconds 6 to 8 Yes No
datetimeoffset
YYYY-MM-DD
hh:mm:ss[.nnnnnnn] [+|-]hh:mm
0001-01-01 00:00:00.0000000
through 9999-12-3123:59:59.9999999 (in UTC) 100 nanoseconds 8 to 10 Yes Yes
http://www.codeproject.com/KB/database/ProtectSQLCodeObject.aspxhttp://www.acorns.com.au/blog/http://www.brentozar.com/sql/blitz-minute-sql-server-takeovers/http://msdn.microsoft.com/en-us/library/aa933242(SQL.80).aspxhttp://msdn.microsoft.com/en-us/library/ms189067.aspxhttp://msdn.microsoft.com/en-us/library/bb934049.aspxhttp://msdn.microsoft.com/en-us/library/bb934049.aspxhttp://msdn.microsoft.com/en-us/library/ms189067.aspxhttp://msdn.microsoft.com/en-us/library/aa933242(SQL.80).aspxhttp://www.brentozar.com/sql/blitz-minute-sql-server-takeovers/http://www.acorns.com.au/blog/http://www.codeproject.com/KB/database/ProtectSQLCodeObject.aspx -
7/31/2019 02 TSQL Enhancements
19/73
cursor
table
Timestamp = rowversion
binary number
Reflects data modifications
uniqueidentifier = Guid
Format: 04c4ce04-16c1-406f-a895-5dd321db7f0b
Datatypes - Other
-
7/31/2019 02 TSQL Enhancements
20/73
Filestream
Sparse Columns
Filtered Indexes
Spatial Data
HierarchyID
DATE and TIME data types
New Data Types
-
7/31/2019 02 TSQL Enhancements
21/73
I am designing an Employee table that needs to cater for
employee photographs. What should I do?
Example: Storing images
-
7/31/2019 02 TSQL Enhancements
22/73
I am designing an Employee table that needs to cater for
employee photographs. What should I do?
You can store the image in the database (blob)
You can store a URL to the image in the database
(Recommended for SQL2005)
http://www.ssw.com.au/ssw/standards/Rules/RulestoBetterSQ
LServerdatabases.aspx#ImageReplaceWithURL
blob vs. file system
http://msdn.microsoft.com/en-us/library/ms345117.aspxhttp://msdn.microsoft.com/en-us/library/ms345117.aspxhttp://msdn.microsoft.com/en-us/library/ms345117.aspxhttp://msdn.microsoft.com/en-us/library/ms345117.aspx -
7/31/2019 02 TSQL Enhancements
23/73
You can store the image in the database (blob)
Database grows really bigBackups take longer
Your code needs to convert the bytes back into an image
Your images are in sync with your data
blob
-
7/31/2019 02 TSQL Enhancements
24/73
You can store a URL to the image in the database
(Recommended for SQL2005)
Database is smaller
Easily validate or change the image (you can look at it on
the file system)
Data could become out of sync with the file system
Need to backup the database and the file system
File system
-
7/31/2019 02 TSQL Enhancements
25/73
Filestream to the rescue
Implemented as a special varbinary(max) where data isstored as a blob on the file system
Allows you to have transactionally consistent
Integrated backup and restore of your binary images
Size limitation is the size of your hard drives free space
Filestream
-
7/31/2019 02 TSQL Enhancements
26/73
Q:\ Ive got an Contacts table with 200,000 rows. To support
the latest Web 2.0 trends we want to also record the contacts
blog address. What should I do?
Problem
-
7/31/2019 02 TSQL Enhancements
27/73
A:\ Just add a new BlogUrl column in
Solution?
-
7/31/2019 02 TSQL Enhancements
28/73
A:\ Just add a new BlogUrl column in
Q:\ Whats the problem with that?
A:\ Most of the entries in your table will be null, it wastes a lot
of database space
Solution?
-
7/31/2019 02 TSQL Enhancements
29/73
Use a sparse column
These columns are new to SQL 2008 They are optimized for storing NULL values
Solution
-
7/31/2019 02 TSQL Enhancements
30/73
Sparse Columns
Data type Nonsparse bytes Sparse bytes NULL percentage
bit 0.125 4.125 98%
tinyint 1 5 86%
smallint 2 6 76%
int 4 8 64%
bigint 8 12 52%
real 4 8 64%
float 8 12 52%
smallmoney 4 8 64%
money 8 12 52%
smalldatetime 4 8 64%
datetime 8 12 52%
uniqueidentifier 16 20 43%
date 3 7 69%
-
7/31/2019 02 TSQL Enhancements
31/73
Sparse Columns
Data type Nonsparse bytes Sparse bytes NULL Percentage
datetime2(0) 6 10 57%
datetime2(7) 8 12 52%
time(0) 3 7 69%
time(7) 5 9 60%
datetimetoffset(0) 8 12 52%
datetimetoffset (7) 10 14 49%
decimal/numeric(1,s) 5 9 60%
decimal/numeric(38,s) 17 21 42%
vardecimal(p,s)Use the decimal type asa conservative estimate.
-
7/31/2019 02 TSQL Enhancements
32/73
Sparse Columns
Data type Nonsparse bytes Sparse bytes NULL Percentage
sql_variantVaries with the
underlying data type
varchar orchar 4+avg. data 2+avg. data 60%
nvarchar ornchar 4+avg. data 2+avg. data 60%
varbinary orbinary 4+avg. data 2+avg. data 60%
xml 4+avg. data 2+avg. data 60%
hierarchyId 4+avg. data 2+avg. data 60%
-
7/31/2019 02 TSQL Enhancements
33/73
Allows you to add an index to a column with a where clause
Useful for indexing columns with null values in them
Filtered Indexes
-
7/31/2019 02 TSQL Enhancements
34/73
Geometry
Geography
Virtual Earth Integration
Planar vs Geodetic Algorithms
Separate install for spatial assemblies
http://www.conceptdevelopment.net/Database/Geoquery/
Spatial Data Types
http://msdn.microsoft.com/en-us/library/bb677335.aspxhttp://msdn.microsoft.com/en-us/library/bb677335.aspxhttp://msdn.microsoft.com/en-us/library/bb677335.aspx -
7/31/2019 02 TSQL Enhancements
35/73
Spatial Datatypes Hierarchy
-
7/31/2019 02 TSQL Enhancements
36/73
Geometry allows you to represent and process polygons
Spatial Data Types
-
7/31/2019 02 TSQL Enhancements
37/73
Employee with a ManagerID column (self join)
New HierarchyID data type
Can be indexed using:
Depth First
Breadth First
How do I represent an Org Chart?
-
7/31/2019 02 TSQL Enhancements
38/73
A depth-first index, rows in a subtree are stored near each
other. For example, all employees that report through a
manager are stored near their managers' record.
Depth First Search
-
7/31/2019 02 TSQL Enhancements
39/73
A breadth-first stores the rows each level of the hierarchy
together. For example, the records of employees who directly
report to the same manager are stored near each other.
Breadth First Search
http://msdn.microsoft.com/en-us/library/bb677243.aspx -
7/31/2019 02 TSQL Enhancements
40/73
Instead of:
DECLARE @myVar intSET @myVar = 5
You can:
DECLARE @myVar int = 5
Inline Variable Assignment
-
7/31/2019 02 TSQL Enhancements
41/73
Pass in a table as an argument to a SPROC
Instead of:
exec sp_MySproc
'murphy,35;galen,31;samuels,27;colton,42
SPROC needs to then parse that string
Table Value Parameters
-
7/31/2019 02 TSQL Enhancements
42/73
You can do this instead
CREATE TYPE PeepsType AS TABLE (Name varchar(20),Age int)
DECLARE @myPeeps PeepsType
INSERT @myPeeps SELECT 'murphy', 35
INSERT @myPeeps SELECT 'galen', 31
INSERT @myPeeps SELECT 'samuels', 27
INSERT @myPeeps SELECT 'colton', 42exec sp_MySproc2 @myPeeps
Table Value Parameters
-
7/31/2019 02 TSQL Enhancements
43/73
The SPROC would look like this:
CREATE PROCEDURE sp_MySproc2(@myPeeps PeepsType
READONLY)
Table Value Parameters
-
7/31/2019 02 TSQL Enhancements
44/73
Auditing, regulating schema changes, capture events on
create_table, alter_procedure, drop_login etc
DDL Triggers
-
7/31/2019 02 TSQL Enhancements
45/73
PIVOT
-
7/31/2019 02 TSQL Enhancements
46/73
CTE (Common Table Expression)
Before
-
7/31/2019 02 TSQL Enhancements
47/73
CTE (Common Table Expressions)
After
-
7/31/2019 02 TSQL Enhancements
48/73
ROW NUMBER see example
TRY/Catch in queries
see example
Top % WITH TIES
select top with tie feature( if top 10 and there are 15
that match number 10 will bring back all 15)
More features
-
7/31/2019 02 TSQL Enhancements
49/73
SELECT TOP 3 Person.FirstName, Person.LastName,
PersonPhone.PhoneNumber
FROM AdventureWorks.Person.Person
INNER JOIN AdventureWorks.Person.PersonPhone ON
PersonPhone.BusinessEntityID =
Person.BusinessEntityID
FOR XML RAW
Working with XML - RAW
-
7/31/2019 02 TSQL Enhancements
50/73
Working with XML - RAW
-
7/31/2019 02 TSQL Enhancements
51/73
What happened to our relationships?
RAW doesnt show our table relationships but gives us a flatXML hierarchy
Working with XML - RAW
-
7/31/2019 02 TSQL Enhancements
52/73
SELECT TOP 3 Person.FirstName, Person.LastName,
PersonPhone.PhoneNumber
FROM AdventureWorks.Person.Person
INNER JOIN AdventureWorks.Person.PersonPhone ON
PersonPhone.BusinessEntityID =
Person.BusinessEntityID
FOR XML AUTO
Working with XML - Auto
-
7/31/2019 02 TSQL Enhancements
53/73
Working with XML - Auto
-
7/31/2019 02 TSQL Enhancements
54/73
Great, but what if I needed to format the XML to output into a
certain schema
Working with XML - Auto
-
7/31/2019 02 TSQL Enhancements
55/73
SELECT TOP 3
1 AS TAG,
NULL AS PARENT,
BusinessEntityID AS [Person!1!BusinessEntityID],
FirstName AS [Person!1!FirstName!ELEMENT]
FROM AdventureWorks.Person.Person
FOR XML EXPLICIT
Working with XML - Explicit
-
7/31/2019 02 TSQL Enhancements
56/73
-
7/31/2019 02 TSQL Enhancements
57/73
Can control how the XML gets output
Ugly query
Is there a better way?
Working with XML - Explicit
-
7/31/2019 02 TSQL Enhancements
58/73
SELECT TOP 3
BusinessEntityID "Person/@BusinessEntityID",
FirstName "Person/FirstName"
FROM AdventureWorks.Person.Person
FOR XML PATH ('')
Working with XML - PATH
-
7/31/2019 02 TSQL Enhancements
59/73
-
7/31/2019 02 TSQL Enhancements
60/73
DECLARE @x XML
SET @x = ''
XQuery Declaring our XML string
-
7/31/2019 02 TSQL Enhancements
61/73
SELECT @x.exist('/christmaslist/person[@gift="socks"]')
SELECT @x.exist('/christmaslist/person[@gift="lump of coal"]')
SELECT @x.exist('/christmaslist/person[@gift="Socks"])
SELECT @x.value('/christmaslist[1]/person[1]/@name',
'VARCHAR(20))
SELECT @x.query('/christmaslist/person')
XQuery - Querying
-
7/31/2019 02 TSQL Enhancements
62/73
query()
value()
exist()
nodes()
modify()
XQuery - Querying
-
7/31/2019 02 TSQL Enhancements
63/73
http://msdn.microsoft.com/en-us/library/ms345117.aspx
XQuery - Resources
http://msdn.microsoft.com/en-us/library/ms187819.aspxhttp://msdn.microsoft.com/en-us/library/ms187819.aspxhttp://msdn.microsoft.com/en-us/library/ms187819.aspxhttp://msdn.microsoft.com/en-us/library/ms187819.aspx -
7/31/2019 02 TSQL Enhancements
64/73
ADO.NET gives you full control over how you
access and retrieve data from the data source
Strongly typed data sets
Work in disconnected mode
ADO.NET
-
7/31/2019 02 TSQL Enhancements
65/73
SQLConnection
Manages the connection to the database
SQLCommand
Defines the data to be read, updated etc.
SQLDataAdapter
Runs the SQLCommand against the database
DataSet
A complete in-memory copy of the data (tables, relationships, data types)
Search, filter, navigate your data without even being connected to the database!
ADO.NET
-
7/31/2019 02 TSQL Enhancements
66/73
Randomize Select output
Repeat statements with GO x
TSQL Tricks
-
7/31/2019 02 TSQL Enhancements
67/73
Spatial Data playground
http://www.conceptdevelopment.net/Database/Geoquery/
Hidden Features in SQL Server
http://stackoverflow.com/questions/121243/hidden-
features-of-sql-server
Top 10 Hidden Gems in SQL Server
http://technet.microsoft.com/en-au/library/cc917696.aspx
Resources 1/2
http://technet.microsoft.com/en-us/library/cc966456.aspxhttp://technet.microsoft.com/en-us/library/cc966456.aspxhttp://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.dochttp://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://www.conceptdevelopment.net/Database/Geoquery/http://technet.microsoft.com/en-us/library/cc966456.aspxhttp://technet.microsoft.com/en-us/library/cc966456.aspx -
7/31/2019 02 TSQL Enhancements
68/73
What to do when you take over a new SQL Server box?
http://www.brentozar.com/sql/blitz-minute-sql-server-takeovers/
Resources 2/2
http://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspxhttp://msdn.microsoft.com/en-us/library/bb630289.aspx -
7/31/2019 02 TSQL Enhancements
69/73
T-SQL Enhancements
Download from Course Materials Site (to
copy/paste scripts) or type manually
http://sharepoint.ssw.com.au/training/UTSSQL/
Session 2 Lab
http://msdn.microsoft.com/en-us/library/bb630352.aspxhttp://msdn.microsoft.com/en-us/library/bb630352.aspx -
7/31/2019 02 TSQL Enhancements
70/73
Free chats and webcasts
List of newsgroups
Microsoft community sites
Community events and columns
Where Else Can I Get Help?
www.microsoft.com/technet/community
Where else can I get help?
-
7/31/2019 02 TSQL Enhancements
71/73
3 things
http://ericphan.info
twitter.com/ericphan
-
7/31/2019 02 TSQL Enhancements
72/73
3 things
http://blog.ozdemir.id.au
twitter.com/mozdemir_au
-
7/31/2019 02 TSQL Enhancements
73/73
Thank You!
Gateway Court Suite 10
81 - 91 Military Road
Neutral Bay, Sydney NSW 2089
AUSTRALIA
ABN: 21 069 371 900
Phone: + 61 2 9953 3000
Fax: + 61 2 9953 3105
www.ssw.com.au