The SQL Server and .NET Hub

Search our hub for SQL Server and .NET knowledge!

Monday, February 6, 2017

A connection was successfully established with the server, but then an error occurred during the login process.

When you try to connect to a SQL Server database from a client application, under certain circumstances, you might get the below error message:

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Named Pipes Provider, error: 0 - No process is on the other end of the pipe.)


A connection was successfully established with the server, but then an error occurred during the login process


In order to -possibly- overcome this problem you can perform the below two checks:

[First Check]:
Ensure that the maximum number of concurrent connections is set to 0 (in SSMS right-click on instance --> connections --> maximum number of concurrent connections), which means unlimited.

[Second Check]:
Ensure that in your connection string, in the client application, along with the rest of the settings, the database name is correct:

string connString="Server=[SERVER_NAME]; Database=[DATABASE_NAME]; User ID = [USER_NAME]; Password=[PASSWORD]";

If you specify a database that does not exist, even though the connection to the SQL Server instance will be established, the provider will not be able to find the database thus resulting to the above error message.

Hope this helps!

The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)


What are your views on the subject? Have something to share? Feel free to leave your comment!

Wednesday, February 1, 2017

Getting Started with SQL Server In-Memory OLTP – Part 2

In the previous article of this blog series, I introduced In-Memory OLTP and explained how it is possible to create an In-Memory OLTP - enabled database as well as memory-optimized tables (durable and non-durable).

Today we are going to talk about naively-compiled stored procedures as well as see a full example of performance improvement when using In-Memory OLTP. 

Natively-compiled stored procedures are SQL Server objects that can access only memory-optimized data structures such as memory-optimized tables, table variables, etc.

The main features of natively-compiled stored procedures are:
  • They are compiled to native code (DLL) upon their reation (the interpreted stored procedures are compiled at first execution)
  • Their call is actually the invokation of a DLL
  • Aggressive optimizations take time at compile time
  • They can only interact with memory-optimized tables and other memory-optimized data structures (i.e. memory-optimized table variables, etc.)
To define a natively-compiled stored procedure, you first need to create the database objects that will be referenced in the procedure.

Now let's see a comprehensive example where I'm going to create a disk-based table, two durable memory-optimized tables and a natively-compiled stored procedure. Then, I'm going to run 100.000 insert statements against each one of those tables and measure the execution times.

/*
* DDL T-SQL Code for Tables and Natively-Compiled SP
*/
--Create Disk-Based Table
CREATE TABLE [dbo].[Person_DiskBased]
(
ID INT NOT NULL PRIMARY KEY ,
FirstName VARCHAR(50) NOT NULL ,
LastName VARCHAR(50) NOT NULL ,
Remarks VARCHAR(50) NOT NULL,  
);
GO

--Create Durable Memory-Optimized Table
CREATE TABLE [dbo].[Person_MemOpt_Durable]
(
ID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH ( BUCKET_COUNT = 1000000 ) ,
FirstName VARCHAR(50) NOT NULL ,
LastName VARCHAR(50) NOT NULL ,
Remarks VARCHAR(50) NOT NULL,  
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
GO

 --Create Durable Memory-Optimized Table for natively-compiled SP
CREATE TABLE [dbo].[Person_MemOpt_Durable_NativeSP]
(
ID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH ( BUCKET_COUNT = 1000000 ) ,
FirstName VARCHAR(50) NOT NULL ,
LastName VARCHAR(50) NOT NULL ,
Remarks VARCHAR(50) NOT NULL,  
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
GO

--Create Natively-Compiled Stored Procedure
CREATE PROCEDURE uspInsertRecords
 @rowcount INT,  
 @firstName VARCHAR(50),
 @lastName VARCHAR(50),
 @remarks VARCHAR(50)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER  
AS   
 BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')  
  DECLARE @i INT = 1;  
  WHILE @i <= @rowcount  
  BEGIN;  
    INSERT INTO [dbo].[Person_MemOpt_Durable_NativeSP] VALUES (@i, @firstName, @lastName, @remarks);  
    SET @i += 1;  
  END;  
END;  
GO

Now that the necessary data structures and natively-compiled stored procedure are created, let's run the workload against each table.

--We are working with the database created in part 1 of this series
USE InMemOLTPDB;
GO

--Initialization
SET STATISTICS TIME OFF;  
SET NOCOUNT ON;  
GO

DECLARE @starttime DATETIME2 = sysdatetime();  
DECLARE @timeDiff INT;  
DECLARE @i INT = 1;  
DECLARE @rowcount INT = 100000;  
DECLARE @firstname VARCHAR(50) = N'Firstname';  
DECLARE @lastname VARCHAR(50) = N'Lastname';  
DECLARE @remarks VARCHAR(50) = N'Remarks';  

--Clear buffers for disk-based execution
CHECKPOINT;
DBCC DROPCLEANBUFFERS;

--Run disk-based execution
BEGIN TRAN;  
  WHILE @i <= @rowcount  
  BEGIN;      
INSERT INTO [dbo].[Person_DiskBased] VALUES (@i,@firstname,@lastname,@remarks);
    SET @i += 1;  
  END;  
COMMIT;  
  
SET @timeDiff = datediff(ms, @starttime, sysdatetime());  
SELECT 'Disk-Based Execution: ' + cast(@timeDiff AS VARCHAR(10)) + ' ms';  

--Clear buffers for memory-optimized/interop execution
CHECKPOINT;
DBCC DROPCLEANBUFFERS;

-- Run memory-optimized execution/interop execution
SET @i = 1;  
SET @starttime = sysdatetime();  
  
BEGIN TRAN;  
  WHILE @i <= @rowcount  
    BEGIN;        
 INSERT INTO [dbo].[Person_MemOpt_Durable] VALUES (@i,@firstname,@lastname,@remarks);
      SET @i += 1;  
    END;  
COMMIT;  
  
SET @timeDiff = datediff(ms, @starttime, sysdatetime());  
SELECT 'Memory-optimized execution (interop): ' + cast(@timeDiff as VARCHAR(10)) + ' ms';  
  

--Clear buffers for memory-optimized with natively-compiled stored procedure execution
CHECKPOINT;
DBCC DROPCLEANBUFFERS;

--Run memory-optimized with natively-compiled stored procedure execution
SET @starttime = sysdatetime();   
EXECUTE uspInsertRecords @rowcount, @firstname, @lastname, @remarks; 
SET @timeDiff = datediff(ms, @starttime, sysdatetime());  
SELECT 'Memory-optimized with natively-compiled stored procedure execution: ' + cast(@timeDiff as varchar(10)) + ' ms';  
go  
  
--Count records-check result in each table
SELECT COUNT(*) FROM dbo.Person_DiskBased (NOLOCK)
SELECT COUNT(*) FROM dbo.Person_MemOpt_Durable (NOLOCK)
SELECT COUNT(*) FROM dbo.Person_MemOpt_Durable_NativeSP (NOLOCK)

--Re-initialize tables for new run (optional)
DELETE dbo.Person_DiskBased;  
DELETE dbo.Person_MemOpt_Durable;
DELETE dbo.Person_MemOpt_Durable_NativeSP;
GO

Execution Results:


In-Memory OLTP Example Execution Results

As you can see from the above screenshot:
  • Disk-based execution took 2408 ms to complete.
  • Memory-Optimized/interop execution took 297 ms to complete (8x speedup).
  • Memory-Optimized with natively-compiled stored procedure took only 94 ms to complete (25.6x speedup).

Below you can also find some graphs illustrating the execution results:

In-Memory OLTP Execution Results


In-Memory OLTP Execution Results


Conclusions
In this article (part 2 of the series dedicated to SQL Server In-Memory OLTP) we talked about natively-compiled stored procedures and saw a full example comparing the execution of 100.000 insert statements against three modes:
  • Disk-Based
  • Memory-Optimized/Interop
  • Memory-Optimized with Natively-Compiled Stored Procedure
For the above scenario, we witnessed a performance improvement of 8x for the Memory-Optimized/Interop mode and 25.6x for Memory Optimized with Natively Compiled stored procedure.

The above is just a small indication on what you can achieve with SQL Server In-Memory OLTP.

Stay tuned as subsequent articles in this series will discuss more specialized topics of In-Memory OLTP!



Monday, January 16, 2017

Getting Started with SQL Server In-Memory OLTP – Part 1

In-Memory OLTP in SQL Server 2014 or later is a powerful engine integrated into the SQL Server Engine, optimized for Online Transaction Processing (OLTP).

The SQL Server and .NET Hub

In-Memory OLTP (codenamed “Hekaton”) is a powerful engine which is fully integrated into SQL Server’s Database Engine and introduces new data structures for optimizing the performance of OLTP workloads. So, you can have memory-optimized tables, natively-compiled stored procedures, memory-optimized table variables, etc.

In-Memory OLTP offers a significant performance boost when it comes to processing large amounts of information, especially in data environments with high levels of concurrency.

In this series of articles, we will see in plain words, how we can take advantage of this technology and start using it for boosting performance of heavy workloads.

In this first article, we are going to see how easy is to create an In-Memory OLTP-enabled database and memory-optimized tables.

OK, enough talking, let's see some code!

--create database
CREATE DATABASE InMemOLTPDB;
GO  

--use the database

USE InMemOLTPDB;
GO

--add memory-optimized file group to the database

ALTER DATABASE InMemOLTPDB ADD FILEGROUP InMemOLTPDB_mofg CONTAINS MEMORY_OPTIMIZED_DATA;

--add file for memory-optimized objects

--you can set any path you like - in this example: c:\memoptdata
--if the directory does not exist you will need to create it
ALTER DATABASE InMemOLTPDB ADD FILE (name='InMemOLTPDB_mofg1', filename='C:\memoptdata\InMemOLTPDB_mofg1') TO FILEGROUP InMemOLTPDB_mofg;

--set the isolation level for memory-optimized tables to SNAPSHOT 

ALTER DATABASE InMemOLTPDB SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON;
GO

Now you can create memory-optimized tables.

When creating memory-optimized tables you have two options:
  • Option 1: You can create a durable memory-optimized table which means that in the case of server crash or failover the data will be available as they will be recovered from transaction logs.
  • Option 2: You can create a non-durable table which means that in the case of a server crash or failover the data in the table will be lost.

The below script creates a sample durable memory-optimized table:

--Memory-Optimized Table: Durable
CREATE TABLE [dbo].[Person_Durable]
  (
     ID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000),
     FirstName VARCHAR(50) NOT NULL,
     LastName VARCHAR(50) NOT NULL,
 Remarks VARCHAR(50) NOT NULL,  
  )WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
GO


The below script creates a sample non-durable memory-optimized table:

--Memory-Optimized Table: Non-Durable
CREATE TABLE [dbo].[Person_Non_Durable]
  (
     ID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000),
     FirstName VARCHAR(50) NOT NULL,
     LastName VARCHAR(50) NOT NULL, 
 Remarks VARCHAR(50) NOT NULL, 
  )WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);
GO

Stay tuned as in the next article we are going to run some simple experiments with In-Memory OLTP and get an indication on the performance benefits.

Check out Part 2 of this series - Now Available.

See also:

References
The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

What are your views on the subject? Feel free to comment!

Thursday, January 5, 2017

Frequent Password Expiration: Time to Revise it?


Until recently, enabling the password expiration option in SQL Server was included in many security best practices. However, recent studies, revised this recommendation and support that it should not be further included in SQL Server’s security best practices. However, if this is the case, how can this recommendation be replaced with new, modern best practices that would take into consideration users’ behavior and habits?

The SQL Server and .NET Hub

Having the password expiration set to ON means that SQL Server checks for all logins that use SQL Server Authentication and contained database users with a password, if their password has expired, and if so, it prompts these logins and users to enter a new password.

Password expiration is part of SQL Server's Password Policy. SQL Server’s Password Policy can use Windows password policy mechanisms. Based on that, SQL Server can apply the same complexity and expiration policies just like in the case of Windows logins. SQL Server's security policy can be based either in Windows, on the database server (local security policy), or on the domain.

In the below example, I’m using the Local Security Policy MMC snap-in (secpol.msc) on my database server, in order to check the password policy settings.

Windows Local Security Policy

As you can see from the above screenshot, the maximum password age is set to 90 days. This means that if I have a login that uses SQL Server Authentication or a contained database user with a password, if the login's or user's password was last changed 90 days (or more) ago, then the login/user will be prompted by SQL Server to change her password.

Even though this practice was used for many years, not only in SQL Server but similarly, on Windows-level, as well as in other systems and applications, recent studies argue that it should not be a recommended practice anymore. On the contrary, these studies suggest that user passwords should not be regularly changed but rather change only when there is a specific and justified reason to do so. Furthermore, new security standards are being formulated that contain new recommendations on password change.

The concept behind the need for new recommendations on password change, is that the whole process must be more user-friendly because as it is today, prompting the user to change her password every X days with no apparent reason, it only causes frustration to the user and has as an effect the user to set similar passwords on every password change or, set passwords that are easy to guess and this is the actual risk.

So, how can you apply this concept in action? How can you ensure to the maximum possible level that you have a healthy and robust password management policy in place? This can be achieved with a combination of actions and policies.

Examples of such practices could be the below:
  • Do not allow the user to set passwords that are easy to guess (you can use password dictionaries with easy-to-guess passwords for that).
  • Ensure that the minimum password length is set to 8 characters but do not limit the maximum length to a small number.
  • If applicable, present the user's in an easily readable way, when her last login took place so in order if she sees a strange login date/time to contact the administrator.
  • Monitor login auditing for "abnormal" login failures (i.e. consecutive login failures) and in this case prompt the user to change her password.
I'm sure that more sophisticated recommendations will be published on the subject along the way, as this is not really a new discussion but rather something that has been thoroughly discussed for years. I believe that now the time is mature to introduce flexible, new best practices regarding password management, that will eventually replace or improve old recommendations and offer a better security framework on the subject.


The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

What are your views on the subject? Feel free to comment!

Thursday, December 29, 2016

Selected Tweets of Year 2016!

Another year has passed...as always, full of everything! Events, blog posts, articles on well-known online SQL Server journals, software tools, and of course direct communication with you, my fellow SQL Server community members, via all available online and offline channels!

This year was very important for me. Besides my blogs and user group events, I have also authored many articles for well-respected online technology journals such as: MSSQLTips, SimpleTalk and SQLShack. Furthermore, I had the honor to be nominated by MSSQLTips committee for the "Rookie of the Year" contest.

Another major contribution was transforming my initiative "Artemiou Data Tools" to a more powerful initiative called "SQLArtBits". Via SQLArtBits I develop cool SQL Server tools and services which can help the user have an even richer experience with SQL Server and be more productive with less effort. The highlights of these tools are DBA Security Advisor and In-Memory OLTP Simulator.

Furthermore, I have transformed my personal blog from "The SQL Server and .NET Blog" to "The SQL Server and .NET Hub". The change in the name reflects also the change in the design. Now, via the new design you can easily search through hundreds of articles and find the SQL Server and .NET knowledge that you seek.

Last but not least, I have started a brand new initiative called "Tech How To's" via which I provide how-to's on just about any technology topic but mainly focusing on software such as: Databases, Programming, Windows, etc.

All the above, provided me with a great interaction with you, my fellow SQL Server community members, for one more year. Thank you for making the SQL Server community an amazing place to be! You rock!

I'm really looking forward for 2017 having already scheduled a variety of exciting community activities!

Wishing to all of you a Happy New Year 2017!

As every year's end, below you can find my selected tweets for the year 2016.


Blog Posts/Articles/Videos/Services/Books and Announcements

Dynamic Data Masking is one of the key #security features in #SQLServer 2016. Learn more at: http://www.sqlnethub.com/2016/04/sql-server-2016-dynamic-data-masking.html  #MVPBuzz

How to get started with #SQLServer http://www.techhowtos.com/databases/how-to-get-started-with-sql-server/  #HowTo

How To Show “This PC” Icon on #Windows 10 Desktop - http://www.techhowtos.com/2016/12/27/how-to-show-this-pc-icon-on-windows-10-desktop/  #Windows10

Temporal Tables in #SQLServer 2016 is a handy way for auditing data changes! http://www.sqlnethub.com/2015/12/sql-server-2016-temporal-tables.html

An amazing collection of #SQLServer tips by @SQLArtBits now available as a #free #download - Get it here! https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tips-collection-august-december-2016/

Have you checked Row-Level #Security in #SQLServer? http://www.sqlnethub.com/2016/02/sql-server-2016-row-level-security.html

In #DotNet, you can connect to and retrieve data from #SQLServer with just a few lines of code http://www.sqlnethub.com/2016/12/how-to-establish-simple-connection-from-csharp-to-sql-server.html  #MVPBuzz

[Blog] How to Establish a Simple Connection from a C# Program to SQL Server http://www.sqlnethub.com/2016/12/how-to-establish-simple-connection-from-csharp-to-sql-server.html  #SQLServer #DotNet #MVPBuzz

Have you checked Entity Framework: Code First? It's quite cool! http://www.sqlnethub.com/2016/04/entity-framework-code-first.html  #DotNet #SQLServer

What are exactly orphaned users in #SQLServer and how can we handle them? http://www.sqlnethub.com/2016/09/what-are-exactly-orphaned-users-in-sql-server.html

Weekly SQL Server Tip 17: The STRING_SPLIT Function in SQL Server 2016 https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-17/  #SQLServer #Tips

My latest article on @sqlnethub! This one is about .NET error handling #MVPBuzz
Cannot implicitly convert type 'string' to 'System.Windows .Forms.DataGridViewTextBoxColumn' - http://www.sqlnethub.com/2016/12/cannot-implicitly-convert-type-string-to-system-windows-forms-datagridviewtextboxcolumn.html  #DotNet

Article in which I'm suggesting some best practices for when patching a #SQLServer failover clustered instance http://www.sqlnethub.com/2016/12/how-to-patch-a-sql-server-failover-cluster.html

How to Patch a SQL Server Failover Cluster - http://www.sqlnethub.com/2016/12/how-to-patch-a-sql-server-failover-cluster.html  #SQLServer

Weekly #SQLServer Tip 16 with a little bit of #DotNet! https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-16/  #SQLArtBits #TipOfTheWeek

MSSQL Tiger Team Blog - SQL Server 2016 SP1: Know your limits - https://blogs.msdn.microsoft.com/sql_server_team/sql-server-2016-sp1-know-your-limits/  #SQLServer

[Bog] How to Suppress the "N Row(s) Affected" Output Message in #SQLServer http://www.sqlnethub.com/2016/12/how-to-suppress-n-rows-updated-output-in-sql-server.html  #MVPBuzz

[Blog] Vote for me for the MSSQLTips Rookie of the Year Award! http://www.sqlnethub.com/2016/12/vote-for-me-for-mssqltips-rookie-of-the-year.html  #SQLServer #MVPBuzz #Community

[Blog] The timeout period elapsed prior to obtaining a connection from the pool - https://aartemiou.blogspot.com.cy/2016/12/timeout-period-elapsed-prior-obtaining-connection-from-the-pool.html  #MVPBuzz #DotNet

My blog is being transformed into a central hub of #SQLServer and .NET knowledge - Read the announcement! https://aartemiou.blogspot.com.cy/2016/12/the-sql-server-and-net-hub-answers-to-your-technical-questions.html  #MVPBuzz

Read my brand new article on @SQLShack and learn more about #SQLServer consolidation best practices! #MVPBuzz http://bit.ly/2gOzfPL

This week's #SQLServer tip by @SQLArtBits
Weekly #SQLServer Tip 15: T-SQL Enhancements & Other in SQL Server 2016 SP1 https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-15/   #SQLArtBits #TipOfTheWeek

Get your weekly bits of #SQLServer knowledge by @SQLArtBits #TipOfTheWeek series! This week's tip: Significant Changes in SQL Server 2016 SP1
Weekly #SQLServer Tip 14 - Significant Changes in SQL Server 2016 SP1 https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-14/  #SQLArtBits #TipOfTheWeek

[Blog] SQL Server 2016 SP1: Breakthrough Changes http://aartemiou.blogspot.com.cy/2016/11/sql-server-2016-sp1-breakthrough-changes.html  #SQLServer #MVPBuzz

[Blog] Updated: Main Limitations of #SQLServer Express Editions http://aartemiou.blogspot.com.cy/2016/10/main-limitations-of-sql-server-express.html  #SQLServer #MVPBuzz

[Blog] SQL Server 2016 SP1: A Pleasant Surprise - https://www.sqlartbits.com/blog/announcements/sql-server-2016-sp1-a-pleasant-surprise/  #SQLServer #SQLArtBits #performance

A brand new weekly #SQLServer tip by @SQLArtBits is out! This time is about #Security! #SQLArtBits
Weekly #SQLServer Tip 13: #Security Advice on Failed Login Attempts in SQL Server - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-13/  #SQLArtBits #TipOfTheWeek

[Video] Introducing DBA Security Advisor in 75 Seconds - https://youtu.be/xZ4KLvI8ago  #SQLArtBits #SQLServer #Security #Tools

This week's #SQLServer tip by @SQLArtBits is about durability options for memory-optimized tables in SQL Server #SQLArtBits #TipOfTheWeek
Weekly #SQLServer Tip 12 - Durability Options for Memory-Optimized Tables in SQL Server https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-12/  #SQLArtBits #TipOfTheWeek

[Video] Introducing In-Memory OLTP Simulator in 60 Seconds - https://www.youtube.com/watch?v=O_eT_7yYRME  #SQLServer #Software #InMemoryOLTP #Hekaton #SQLArtBits

[Blog] In-Memory OLTP Simulator v1.1 is Now Out! https://www.sqlartbits.com/blog/announcements/in-memory-oltp-simulator-v1-1-is-now-out/  #SQLServer #Software #Tools #InMemoryOLTP #Hekaton

Get backward compatibility info for any #SQLServer version with this #free online service: https://www.sqlartbits.com/services/sql-server-backward-compatibility-checker/  #mvpbuzz

Weekly #SQLServer Tip 11: T-SQL Code Snippets - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-11/  #SQLArtBits #TipOfTheWeek

My new article on @SQLShack is about T-SQL code snippets in #SQLServer and a special way of managing them! http://www.sqlshack.com/how-to-create-and-manage-t-sql-code-snippets/  #MVPBuzz

Check out my new article on @SQLShack! #SQLServer #MVPBuzz
How to create and manage T-SQL code snippets http://bit.ly/2eZBzyI  via @SQLShack w/ @artemakis

My latest article on @SQLShack is all about #SQLServer #Security. Check it out! http://www.sqlshack.com/securing-sql-server-surface-area/  #MVPBuzz

This week's #sqlserver tip by @SQLArtBits is all about #security!
Weekly #SQLServer Tip 10: Secure SQL Server https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-10/  #Security #InfoSec #TipOfTheWeek #SQLArtBits

New #Free online #SQLServer Service by @SQLArtBits: SQL Server Backward Compatibility Checker - https://www.sqlartbits.com/services/sql-server-backward-compatibility-checker/  #SQLArtBits

This week's tip is all about #SQLServer #security #infosec #mvpbuzz
Weekly #SQLServer Tip 9 - Password Expiration Option - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-9/  #SQLArtBits #TipOfTheWeek #Security #infosec

[Useful Table] Main Limitations of SQL Server Express Editions - http://aartemiou.blogspot.com.cy/2016/10/main-limitations-of-sql-server-express.html  #SQLServer #MVPBuzz

SQLServerAgent could not be started (reason: Unable to connect to server '(local)'... https://www.sqlartbits.com/blog/sql-server-troubleshooting/sqlserveragent-could-not-be-started-reason-unable-to-connect-to-server-local/  #sqlserver #mvpbuzz

Top 10 security considerations for your SQL Server instances - http://www.sqlshack.com/top-10-security-considerations-sql-server-instances/  #SQLServer #MVPBuzz

Weekly #SQLServer Tip 8 by @SQLArtBits
Weekly #SQLServer Tip 8 is Out! https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-8/  #TipOfTheWeek #SQLArtBits

[Blog] Main Limitations of #SQLServer Express Editions - http://aartemiou.blogspot.com.cy/2016/10/main-limitations-of-sql-server-express.html  #SQL #MVPBuzz

Get your weekly #SQLServer tip! #TipOfTheWeek 7 - Query Store  https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-7/  #SQL #SQLArtBits

How to resolve the "cannot connect to WMI provider" issue - https://support.microsoft.com/en-us/kb/956013  A very helpful support article by #Microsoft #SQLServer

My new article on @mssqltips: Script to Manage #SQLServer Rebuilds and Reorganize for Index Fragmentation - https://www.mssqltips.com/sqlservertip/4470/script-to-manage-sql-server-rebuilds-and-reorganize-for-index-fragmentation/  #MVPBuzz

[Blog] What are Exactly Orphaned Users in #SQLServer? http://aartemiou.blogspot.com.cy/2016/09/what-are-exactly-orphaned-users-in-sql-server.html  #MVPBuzz

It's time for you weekly #SQLServer bits of knowledge by @SQLArtBits! Weekly SQL Server Tip 6 - Always Encrypted - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-6/

Retweeted @SQLArtBits:
[Blog] Why We Build SQL Server Tools - https://www.sqlartbits.com/blog/announcements/why-we-build-sql-server-tools/  #SQLServer #Software #Tools #SQL #MVPBuzz

Why we built In-Memory OLTP Simulator: https://www.sqlartbits.com/products/in-memory-oltp-simulator-ultimate/ #whywebuiltit  #MVPBuzz #SQLServer

My latest article on @mssqltips: Simple Experiment with #SQLServer In-Memory OLTP is 79 Times Faster! https://www.mssqltips.com/sqlservertip/4469/simple-experiment-with-sql-server-inmemory-oltp-is-79-times-faster/  #MVPBuzz #SQL

Get your weekly bits of #sqlserver knowledge! Tip of the week 5! #MVPBuzz
Ready for some bits of #sqlserver knowledge? #TipOfTheWeek 5: https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-5/  #SQLArtBits

Weekly #SQLServer Tip 4 - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-4/  #ArtDataTools #SQL #Tools

If you are just getting started with #InMemoryOLTP in #SQLServer you should read my article on #SimpleTalk https://www.simple-talk.com/sql/learn-sql-server/introducing-sql-server-in-memory-oltp/  #MVPBuzz

It's time for this week's #SQLServer Tip! https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-3/  #MVPBuzz #SQL

Easily get the latest service pack info for any #SQLServer instance with this #free online service - https://www.sqlartbits.com/services/sql-server-service-pack-info/  #mvpbuzz

My #free ebooks on #SQLServer have now over 6300 downloads! Learn more about SQL Server today! https://www.aartemiou.com/sqlbooks/  #SQL #MVPBuzz

Weekly #SQLServer Tip 2 - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-2/  #SQL #MVPBuzz

[Blog] The "Public" Database Role in SQL Server - http://aartemiou.blogspot.com.cy/2016/08/the-public-database-role-in-sql-server.html  #SQLServer #SQL #MVPBuzz

New #sqlserver #community initiative! Weekly SQL Server Tips! Tip 1 - https://www.sqlartbits.com/blog/weekly-sql-server-tips/weekly-sql-server-tip-1/  #community #mvpbuzz

[Blog] SQLServerAgent could not be started (reason: Unable to connect to server '(local)'... - https://www.sqlartbits.com/blog/sql-server-troubleshooting/sqlserveragent-could-not-be-started-reason-unable-to-connect-to-server-local/  #MVPBuzz #SQLServer

[Blog] Why Secure Your #SQLServer Instances? https://www.artdatatools.com/blog/sql-server-security/why-secure-sql-server-instances/  #MVPBuzz #Security

[Blog] Artemiou Data Tools: Free Online SQL Services - http://aartemiou.blogspot.com.cy/2016/08/free-sql-services.html  #MVPBuzz #SQLServer #Community #Software

My latest presentation on #SQLServer #Security: How to Secure Your SQL Server Instances - http://www.slideshare.net/artemakis/how-to-secure-your-sql-server-instances  #MVPBuzz

[Webcast] Learn how you can secure your #SQLServer instances by watching my latest #webcast - https://youtu.be/ZY96LtVSJbk  #Security #mvpbuzz

[Blog] Why You Need to Secure Your SQL Server Instances - http://aartemiou.blogspot.com.cy/2016/07/why-you-need-to-secure-your-sql-server.html  #SQLServer #Security #MVPBuzz

How can you export #SQLServer records into individual text files? Read my latest article on @mssqltips: https://www.mssqltips.com/sqlservertip/4353/export-sql-server-records-into-individual-text-files/  #MVPBuzz

[Blog] Operating System Requirements for all SQL Server Versions and Editions - http://aartemiou.blogspot.com.cy/2016/05/operating-system-requirements-for-all.html  #SQLServer #MVPBuzz

Learn how you can use #SQLServer Model system database. Read my my latest article on @mssqltips - https://www.mssqltips.com/sqlservertip/4265/modifying-the-sql-server-model-system-database-to-customize-new-database-settings/  #MVPBuzz

[Blog] Entity Framework: Code First - http://aartemiou.blogspot.com.cy/2016/04/entity-framework-code-first.html  #MVPBuzz #DataAccess

Learn how to implement #SQLServer In-Memory OLTP. Read my latest article on Simple-Talk Journal: https://www.simple-talk.com/sql/learn-sql-server/implementing-sql-server-in-memory-oltp/  #MVPBuzz #Hekaton

[Blog] SQL Server 2016: Dynamic Data Masking - http://aartemiou.blogspot.com.cy/2016/04/sql-server-2016-dynamic-data-masking.html  #MVPBuzz #SQLServer2016 #SQLServer #Security

[Blog] SQL Server 2016: The STRING_SPLIT Function - http://aartemiou.blogspot.com.cy/2016/03/sql-server-2016-stringsplit-function.html  #MVPBuzz #SQLServer

A must-read: Guidelines for Using Indexes on Memory-Optimized Tables - https://msdn.microsoft.com/en-us/library/dn133166.aspx  #Hekaton #SQLServer

Learn more about my experiment. Get the paper at: https://www.inmemoltpsim.com/publications/  #MVPBuzz #Hekaton #SQLServer

My article in @mssqltips: Assessing the SQL Server In-Memory OLTP Performance Benefits -https://www.mssqltips.com/sqlservertip/4201/assessing-the-sql-server-inmemory-oltp-performance-benefits/  #MVPBuzz #SQLServer #Hekaton

See how I achieved breakthrough performance (26x speedup) with #SQLServer #InMemoryOLTP! Get the paper at: https://www.inmemoltpsim.com/  #MVPBuzz

My technical article 'In-Memory OLTP Simulator:The Experiment' is now available for download! http://www.inmemoltpsim.com  #SQLServer #MVPBuzz

[Blog] SQL Server 2016: Row Level Security - http://aartemiou.blogspot.com.cy/2016/02/sql-server-2016-row-level-security.html  #MVPBuzz #SQLServer

My whitepaper titled 'In-Memory OLTP Simulator:The Experiment' to be published on March 2, 2016! http://www.inmemoltpsim.com  #SQLServer #MVPBuzz


Miscellaneous

Hi #sqlfamily! Follow my blog's twitter account @sqlnethub and stay up to date about my latest blog articles! Cheers, Artemakis.

Hi folks! Make sure you check out my blog which was recently transformed into something more powerful! http://www.sqlnethub.com  #SQLServer

Join our Facebook group and stay up to date with our latest articles and how-to's! https://www.facebook.com/groups/1563445467016000/  #SQLServer #DotNet #Community

Looking for a solution to a technical problem having to do with #SQLServer or #DotNet? Just run a search! http://www.sqlnethub.com/

The SQL Server and .NET Hub just got its brand new URL! http://www.sqlnethub.com  #MVPBuzz #SQLServer #DotNet #Community

Cool #free online service: #sqlserver supported Operating systems - https://www.sqlartbits.com/services/sql-server-supported-os/

Working on some new articles on #sqlserver #security, architecture and #performance via #InMemoryOLTP! #MVPBuzz

Check out our #free online #SQLServer services! https://www.sqlartbits.com/services/  #SQLArtBits #sql #community

Want to know fast which Operating Systems are supported by a #SQLServer version? Use this simple, #free #service - https://www.sqlartbits.com/services/sql-server-supported-os/

[News] Next week I'm starting a new series of technical journal articles which will be featuring interesting solutions! #SQLServer #MVPBuzz

Retweeted @SQLArtBits:
Too busy to visit our website? No problem, here's our rss feed: https://www.sqlartbits.com/rss/rss.xml  #SQLServer #Software #Tools

Retweeted SQLArtBits:
We are adding a special #benchmarking mode to In-Memory OLTP Simulator! More news soon! https://www.sqlartbits.com/products/in-memory-oltp-simulator-community/  #SQLServer #InMemoryOLTP

Retweeted SQLArtBits:
Make sure you check out our weekly #SQLServer tips for cool bits of #SQL knowledge! https://www.sqlartbits.com/blog/weekly-sql-server-tips/  #TipOfTheWeek #SQLArtBits

Retweeted @SQLArtBits:
All brand new Snippets Generator v3.1 to be released next Wed. Sep 21 2016! Check often: https://www.sqlartbits.com  #SQLServer #SQL #SQLArtBits

Retweeted @SQLArtBits:
Subscribe to our RSS feed and stay up to date with our latest news, releases and articles! https://www.sqlartbits.com/rss/rss.xml  #sql #sqlserver #software

DBA Security Advisor now on Facebook! https://www.facebook.com/dbasecadvisor/  #SQLServer #Security #Software #MVPBuzz

Easily test #SQLServer In-Memory OLTP with my software tool In-Memory OLTP Simulator! http://www.inmemoltpsim.com  #MVPBuzz

Another successful #CDNUG event took place! I hope you enjoyed my session on Entity Framework Code First! Thank you for attending! #MVPBuzz

Playing with Entity Framework Code First for my session in an upcoming event. A quite cool feature in the Data Access world! #MVPBuzz

Preparing my session for the upcoming #CDNUG event titled: Entity Framework: Lets Code First! #MVPBuzz #DotNet #SQLServer #DataAccess

Running hundreds of simulations against Hekaton via In-Memory OLTP Simulator! http://www.inmemoltpsim.com  #MVPBuzz #SQLServer

You really have to play with indexes against your workload in order to conclude on the best index type for your specific case. #SQLServer


News

Enjoy some real discounts by @SQLArtBits!
Who would like to see some real #holiday #discounts? Visit our store! 70% off on all our products! https://www.sqlartbits.com/store/  #SQLServer

Working on a new article about #SQLServer AlwaysOn Availability Groups. To be published tomorrow on my blog http://www.sqlnethub.com  #MVPBuzz

Proudly announcing: "The SQL Server and .NET Hub" - Your central hub for #SQLServer and .NET knowledge! https://aartemiou.blogspot.com.cy/  #MVPBuzz

Next week we will be publishing a brand new article about #SQLServer #Security - Check our blog often! https://www.sqlartbits.com/blog/  #SQLArtBits

[News] I'm in the process of transforming my main blog into something much much bigger! Stay tuned #SQLFamily! #SQLServer #MVPBuzz

In-Memory OLTP Simulator 1.1 (Build_20161120_1) on Softpedia - Read the review - Try it out! http://www.softpedia.com/get/Internet/Servers/Server-Tools/In-Memory-OLTP-Simulator.shtml  #SQLArtBits #SQLServer

The new build of In-Memory OLTP Simulator, made available today,fully supports #SQLServer 2016 with SP1! https://www.sqlartbits.com/products/in-memory-oltp-simulator-ultimate/  #SQLArtBits

Now everybody can experience the full power of #SQLServer with Server 2016 SP1! Many Enterprise features available! https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/

This is cool! https://blogs.msdn.microsoft.com/sqlserverstorageengine/2016/11/17/create-or-alter-another-great-language-enhancement-in-sql-server-2016-sp1/  #SQLServer

Coming up next week on Nov 1, with a cool new feature: Benchmark Mode #SQLServer #Hekaton #Software
SQLArtBits @SQLArtBits
[Announcement] In-Memory OLTP Simulator v1.1 will be released on Tuesday, Nov 1, 2016! Stay tuned! https://www.sqlartbits.com  #SQLServer

DBA Security Advisor v1.0 Build 20161020_1 is Now Out! #Secure your #SQLServer instances today! https://www.sqlartbits.com/products/dba-security-advisor-enterprise/  #security

So excited about this! #SQLServer #MVPBuzz
[News] Tomorrow, we are releasing a new build of DBA Security Advisor v1.0! https://www.sqlartbits.com  #SQLServer #Security #Tools #SQLArtBits

Deep diving into #SQLServer #security. Expect a series of some really interesting articles on security & hardening best practices! #MVPBuzz

Retweeted @SQLArtBits:
[News] A new build of our Enterprise product DBA Security Advisor is scheduled for release in the coming days. Stay tuned! #SQLServer #Tools

Do you like high-quality #SQLServer tools that just work? Do you enjoy simplicity? Check out @SQLArtBits: http://www.sqlartbits.com  #Software

Dynamic T-SQL Generator v2.0 is now out! It's #free and full of new features! Get it today! https://www.sqlartbits.com/products/dynamic-tsql-generator/  #SQLServer #MVPBuzz

[News] Dynamic T-SQL Generator v2.0 will be released on Wed October 5 2016! Stay tuned! https://www.sqlartbits.com/  #SQLServer #Free #Software

Coming up in mid-October: Dynamic T-SQL Generator v2.0 and it's full of brand new features! Check often: https://www.sqlartbits.com  #SQLServer

Snippets Generator v3.1 is now out and it's free! Get it at: https://www.sqlartbits.com/products/snippets-generator/  #MVPBuzz #SQLServer #SQL #Tools

Artemiou Data Tools is now @SQLArtBits! Some really cool stuff is coming up next week! https://www.sqlartbits.com  #mvpbuzz #community

A new build of DBA Security Advisor is available. See what's new at: https://www.dbasecadvisor.com/news/  #SQLServer #Security #MVPBuzz

Securing your #SQLServer instances has just been made easier: Check out my latest tool named 'DBA Security Advisor': https://www.dbasecadvisor.com

DBA Security Advisor is Now Out! Easily assess your #SQLServer instances against potential #security risks! https://www.dbasecadvisor.com/  #MVPBuzz

Working on my #free tool 'Snippets Generator' which supports #SQLServer 2012 or later. A major upgrade to be released this week! #MVPBuzz

I am a Microsoft Data Platform MVP for the 8th Year! http://aartemiou.blogspot.com.cy/2016/04/im-microsoft-data-platform-mvp-for-8th.html  #MVPBuzz #Community #SQLServer

Working on a new technical article on #SQLServer #InMemoryOLTP. More news about it next week! #Hekaton #MVPBuzz

New section on In-Memory OLTP Simulator's website: Publications https://www.inmemoltpsim.com/publications  #MVPBuzz #SQLServer #Hekaton


The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

Tuesday, December 20, 2016

How to Establish a Simple Connection from a C# Program to SQL Server

This is a basic example on how to establish a connection to SQL Server from a C# program.

Use the System.Data.SqlClient namespace in the top section of your code as below:
using System.Data.SqlClient;

Set the connection string - Trusted connection (Windows Authentication). In the below example I'm using "master" as the default database. You can replace "master" with the default database you wish to set:

string connString = @"Server=INSTANCE_NAME;Database=master;Trusted_Connection = True;";

In case you want to set a connection string with standard security (username/password - not recommended) then you can set the connection string based on the below example:

string connString = @"Server=INSTANCE_NAME;Database=master;User ID=USERNAME;Password=PASSWORD";

With the "using" keyword, .NET automatically manages the task of closing the connection to the database. This an easy way to avoid "connection leak" issues. Here's the code example:

 using (SqlConnection conn = new SqlConnection(connString))
            {
                //set the command to execute against SQL Server (this is where you set your query)
                string query = @"SELECT [fileid],[filename] FROM sysfiles";
                SqlCommand cmd = new SqlCommand(query, conn);

                //open connection
                conn.Open();

                //the actual command execution
                SqlDataReader dr = cmd.ExecuteReader();

                //if reader has any rows retrieve them
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        //handle the retrieved record (i.e. display it)
                        MessageBox.Show(dr.GetInt16(0) + " - " + dr.GetString(1));
                    }
                }
                else
                {
                    MessageBox.Show("No data found.");
                }
                dr.Close();
            }


The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

Wednesday, December 14, 2016

Cannot implicitly convert type 'string' to 'System.Windows.Forms.DataGridViewTextBoxColumn

If you get the above error message when developing a .NET application, then you have most probably set as a column name for one of your datagridview column the reserved word 'name'.

Cannot implicitly convert type 'string' to 'System.Windows.Forms.DataGridViewTextBoxColumn
Example of Exception in Visual Studio when Using the Reserved Word "Name" as a DataGridView Column Name.

If you do this, then the compiler finds a conflict between the assignment of the form's name and the DataGridview's column name.

To resolve this issue just change the name of the DataGridView's column to something else instead of "name".

There is a reason there are reserved words not only in .NET byut in many other development platforms as well (i.e. SQL Server, etc.).

To this end, please make sure that you are not using any reserved words in your development work because if you use them, there is always the risk of a conflict with system routines like the above example.

Check this MSDN article for information about the words reserved by the linker.

The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

For more articles click here!


Monday, December 12, 2016

How to Patch a SQL Server Failover Cluster

Patching SQL Server is one of the main administrative tasks in the DBA's life.

However, patching SQL Server is a procedure that needs to be planned, tested, and performed very carefully.

Patching SQL Server Failover Cluster


Below you can find a suggested methodology for patching a failover clustered instance of SQL Server. This example assumes a two-node failover cluster but can be easily extended to failover clusters with more nodes as the principle is the same.

1. Plan ahead, decide the patches to be installed
2. Check the patch requirements, check if there is enough disk space on the cluster nodes (especially on the drives the system databases and SQL Server binaries are located), check the consistency of all your SQL Server databases on the instances to be patched,

3. Apply the patch(es) on your Test environment by following the below steps:
3.1 Notify the affected parties. Get the required approvals.
3.2 Backup sytem databases: master, model, msdb
3.3 Backup the resource database (more info)
3.4 Backup user databases
3.5 Failover all SQL cluster roles to Node A (minimal downtime might occur during the switching - inform users)
3.6 Install the patches on Node B (passive)
3.7 Restart Node B
3.8 Failover all SQL cluster roles to Node B (minimal downtime might occur during the switching - inform users)
3.9 Install the patches on Node A (passive)
3.10 Restart Node A

4. Certify that everything works well on the Test failover cluster after the installation of patches is completed (perform tests with Node A active, then Node B active, etc.). You need to get acceptance by all affected parties (i.e. IT users, application owners, etc.).

5. If everything works well on the Test environment and you have the green light to proceed with patching Production, then you may follow the below steps (if not, then perform patch rollback on all cluster nodes and restore system databases):
5.1 Notify the affected parties
5.2 Backup sytem databases: master, model, msdb
5.3 Backup the resource database (more info)
6.4 Backup user databases
6.5 Failover all SQL cluster roles to Node A (minimal downtime might occur during the switching - inform users)
6.6 Install the patches on Node B (passive)
5.7 Restart Node B
5.8 Failover all SQL cluster roles to Node B (minimal downtime might occur during the switching - inform users)
5.9 Install the patches on Node A (passive)
5.10 Restart Node A

6. Certify that everything works well on the failover cluster after the installation of patches is completed (perform tests with Node A active, then Node B active, etc.). You need to get acceptance by all affected parties (i.e. IT users, application owners, etc.). If there are issues, perform patch rollback on all cluster nodes and restore system databases.

Note: Along with planning the patch testing and deployment, you need to get the required approvals as the above process might cause some downtime (i.e. during the failover actions).


Additional resources:

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

The SQL Server and .NET Hub





Friday, December 9, 2016

How to Suppress the "N Row(s) Affected" Output Message in SQL Server

Sometimes, when working with T-SQL scripts, you might want to skip the message "(N row(s) affected)" message.

You get this message when you execute T-SQL statements or stored procedures that they affect rows. To this end, SQL Server returns the number of records which were affected by the database operation you performed.

If you want to suppress this message, then you can use the "SET NOCOUNT" statement.

So, for example you can try something like this:

SET NOCOUNT ON;

-- Your query goes here

SET NOCOUNT OFF;

Below, you can see an example with screenshots that illustrates the above


Using NOCOUNT in SQL Server
Figure 1: Running a T-SQL Statement with the Default NOCOUNT Setting.


Using NOCOUNT in SQL Server
Figure 2: Running a T-SQL Statement After Setting NOCOUNT to ON.


The SQL Server and .NET Hub


Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)



Thursday, December 8, 2016

Vote for me for the MSSQLTips Rookie of the Year Award!

I love being an active member of the SQL Server and .NET communities.

There is something magical in this.

I don't know. Maybe it's the thrill of writing a new article giving solution to a technical problem, or an article on a new technology or feature, or a webcast maybe?

Perhaps it's the excitement when presenting at a conference, or writing a new SQL Server tool in .NET.

All of that converge into a single thing: the interaction with you, my fellow technical community members.


After all these years of actively participating to the SQL Server and .NET technical communities, I believe that this is the key motivation in all this. The discussions, the feedback, both positive or negative, it doesn't really matter, the feeling that with your contributions you really help people, and so much more is the motivational power behind my contributions to the technical communities.

This year, among other, I started writing for the prestigious MSSQLTips online journal. MSSQLTips is one of the most established online SQL Server communities and with its founders’ professionalism as well as with all those high-quality tips, it helps hundreds of thousands, maybe even millions of fellow community members.

Every year, MSSQLTips runs the “Author of the Year” and “Rookie of the Year” contests. I had the honor to be nominated for the “Rookie of the Year” award this year.

So, if you enjoy my articles on MSSQLTips, I would appreciate it if you vote for me! This is very easy. You can just visit the MSSQLTips Author Voting page and vote!

As always, my commitment is that I will keep on contributing to the SQL Server community via all available online and offline channels.  I will keep on writing high-quality journal articles and blog posts. I will keep on writing cool SQL Server tools and books making them available to all of you. I will keep on presenting at conferences, user group events and webcasts! I will keep on tweeting...and the list goes on!

And yeah, you can definitely expect more tips in 2017! 


Cheers,
Artemakis

The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

Tuesday, December 6, 2016

The SQL Server and .NET Hub: Answers to Your Technical Questions

As of today, The SQL Server and .NET Blog is The SQL Server and .NET Hub!

Why this change? Because this not just a blog anymore! It's being transformed into a hub with high-quality articles, how-to series, webcasts, and much more!

All the above have to do with different technical areas of SQL Server and .NET development (mainly C#).

So join us celebrating this transformation! Spread the news! Share this post! Join the Facebook Group! Let our fellow technical community members know about The SQL Server and .NET Hub!

P.S: We are in the process of also setting up a custom domain name for our in hub in order to make it easier for all to remember its URL.

The SQL Server and .NET Hub

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

Featured Documents

SQL Server Development

View more

SQL Server Administration

View more

SQL Server Troubleshooting

View more

.NET

View more

SQL Server Performance

View more

SQL Server Programmability

View more

SQL Server Security

View more