SQL Server is a relational database management system (RDBMS) developed by Microsoft. It is a server software product with many features, and it runs on Windows and Linux operating systems. Microsoft SQL Server can be used for managing both small databases (for example, a few hundred megabytes to about gigabytes) and very large databases (terabyte-sized or larger).
Besides business solutions, Microsoft offers SQL Server Developer and SQL Server Express.
- SQL Server Developer is a full-featured free edition, licensed for use as a development and test database in a non-production environment.
- SQL Server Express is a free edition of SQL Server, ideal for the development and production of desktop, web, and small server applications.
Table of Contents
Tutorials and Courses
- sqlservertutorial – This website shows all aspects of using SQL Server. After going through the entire tutorials, you will be able to administer SQL Server effectively, query data efficiently from tables in the SQL Server database, and create database objects.
- Microsoft SQL for Beginners – A comprehensive course to teach you how to complete SQL queries using Microsoft SQL Server and the T-SQL language. If you have absolutely no SQL or database background, this course is for you.
- Introduction to SQL Server – Even though this course is an introduction to relational databases and SQL Server, it starts with a high level.
- Microsoft SQL documentation – Learn how to use Azure SQL Services and SQL Server to manage your database needs, both on-premises and in the cloud.
- SQL Server tutorial for beginners – In this tutorial, you will learn from the very basics and cover topics like joins, views, triggers, system functions, stored procedures, user-defined scalar and table-valued functions, etc.
Tips to Pick a Service for SQL Servers
All enterprise-level applications and business data rely on SQL in one way or another. Thus, you need a rock-solid back-end database that won’t let you down when it matters most. Here are features to look for in your next SQL relational database management system:
Your company is growing; your database needs should grow with it. When considering the scalability of a particular product, ask about its maximum supported size – how many tables can be contained in the product? What size limits exist for specific components like indexes? How quickly can an index be created/destroyed, and what effect does this have on other users connected to this same machine? Does it support just one user at once or many? Do users have to compete for locks, or can they work on the same data in parallel while avoiding contention?
Does it support large numbers of records and transactions per second? Is there enough CPU power to allow for query optimization – that is, does it take advantage of the processor cache size? What are the limits on a number of concurrent queries, maximum simultaneous opens/creates/updates/closes on tables or temporary objects (tables), maximum levels of recursion allowed inside user-defined functions (UDFs), etc? How powerful is the optimizer? Does it identify and exploit obvious indexes if they exist where appropriate; what indexing strategies has it been taught? If you were hoping to use an advanced indexing strategy to optimize your database, is that supported?
Can it do transactions across multiple databases or multiple servers? What kind of recovery model does it support? Is there a way to build and test recovery strategies for different failure scenarios before they’re needed in the real world? Does it have built-in encryption to protect data in transit during database backups – not just from prying eyes, but also from theft by disgruntled employees? Can it be accessed by remote users via ODBC, JDBC, .Net, or other means?
Does this product support multi-tenancy – separate areas of the same database for read vs. write access (for example one set of tables for product information, another set of tables for customer billing info). What kind of security does it support (ie: database-level security)? Does it offer the ability to enforce permissions? For example, is there a system in place to prevent one user from accidentally or intentionally deleting the entire database – and thus all data stored within? Can users work with their own objects (tables/views) in isolation – that is, without seeing other users’ objects? Is there a way to view all of the current users connected to this machine at once, so you know who is doing what without having to query each table individually?
5) Replication / Availability
Is this product available 24x7x365 in order to minimize downtime during planned outages? Does it support database mirroring or clustering between two instances of the software to guarantee availability during planned downtime and disasters that may occur outside normal business hours? How do you minimize backup window impact by protecting data already in a replicated state – for example, any incremental backups made after the initial full copy?
What’s the maximum number of concurrent users the product can support, and what are its limits on: number of concurrent queries, maximum simultaneous opens/creates/updates/closes on tables or temporary objects (tables), maximum levels of recursion allowed inside user-defined functions (UDFs), etc. What kind of statistics does it maintain about data access patterns – particularly as they pertain to which users and applications are accessing what tables, views, indexes, columns etc? Is there a way to analyze usage for security (ie: auditing) or performance purposes? What kind of search functionality does it support – is it possible to quickly find all data modified in the last month by a specific user? In the last year by a specific table? By any user with a specific login name? Can I get summary information about how many rows were added/modified/deleted from all my tables in the last day/hour/week? How far back can you go in time when generating this type of report?
7) Backup / Restore and Disaster Recovery
Is it possible to take snapshots of individual objects like tables and views? If not, is there a way to copy the whole database and all its objects quickly, without having to restore from the backup first? How easy is it to configure different types of backups – full (all data), differential (only changes since last full backup), transaction log (changes made since last backup), or filegroup-level backups? For example one set of tables for product information, and another set of tables for customer billing info). Is the product able to automatically manage your transaction logs in order to free up space on disk when needed? Are these features configurable at the server level or must they be customized at each individual application level?