SQL Server Express

Microsoft SQL Server Express微软公司所開發的关系数据库產品SQL Server的免費下載版本,可自由下載、分發(需經註冊)及使用。這個版本的設計是專門為嵌入式系统或較小型的程式而設計。本產品可遡源至過往隨同SQL Server 2000軟件分發的Microsoft Database Engine (MSDE),用以讓程式開發者在其測試其程式時建立一個系統需求較低的測試環境。自SQL Server 2005開始,本產品改用現時的名稱。

Microsoft SQL Server Express
在一台Windows Server 2019VM上安裝SQL Server 2017 Express的畫面縮圖。
開發者微软
穩定版本
SQL Server 2017 Express
(2017年11月6日2017-11-06
编程语言C语言C++
操作系统Microsoft WindowsLinux
系統平台IA-32IA-64
> 512 MB RAM
.NET Framework 4.0[1]
语言英文、中文、法文、德文、意大利文、日文、韓文、巴西葡文、俄文及西班牙文
类型关系数据库管理系統
许可协议专有软件[2]
网站www.microsoft.com/en-us/sql-server/sql-server-editions-express

它繼承了多數的SQL Server功能與特性,像是Transact-SQLSQL CLR等,相當適合使用在小型的網站,或者是小型的桌面型應用程式,它也可以和 SQL Server 整合,作為資料庫複製(Replication)的訂閱端。

功能与限制

SQL Server Express提供了付費的完整版本的多項功能[3],然而其技術限制使之無法適用於大規模的部署。這兩個版本的差異在於:

  • 資料庫的大小限制:对SQL Server 2008 R2 Express、SQL Server 2012 Express、SQL Server 2014 Express、SQL Server 2016 Express单个資料庫的大小限制最大為 10 GB[4];而在較早期的SQL Server 2005 Express 和SQL Server 2008 Express 上,单个資料庫的大小限制最大為4 GB。即使如此,亦已比最初MSDE版本的2 GB要多。而且這個大小的限制只有在資料檔案上,交易記錄檔則不受此限。
  • 沒有 SQL Agent服务[5][6]:若要做排程服務必須自己寫程式。
  • 硬體方面的人為限制:
    • 允許在多核心的電腦上使用,但只會使用一個CPU核心來運算[7]。這在具有多核心CPU的電腦上會造成浪費。MSDE 最高可以支援二顆 CPU核心。
    • 可使用的記憶體量最高只有 1GB。而全功能标准版至少使用4GB内存。

MSDE有一个并发工作负债监控器并限制在少量用户并发访问,SQL Server Express没有这个并发限制[8]

SQL Server Express包括了几个数据库管理的图形用户界面工具:

  • SQL Server Management Studio - since 2012 SP1;[9] before that, only a stripped-down version called SQL Server Management Studio Express is provided
  • SQL Server Configuration Manager
  • SQL Server Surface Area Configuration tool
  • SQL Server Business Intelligence Development Studio

MSDE 沒有管理介面

SQL Server Express不包括全功能标准版的几个工具:

  • Analysis Services
  • Integration Services
  • Notification Services

SQL Server Express的各版本是可以远程连接的,但需要用户做一定的配置。

過往版本

Microsoft SQL Server Express Version History
版本號碼 發行日期 主流支援完結日期 延伸支援完結日期 支援作業系統
SQL Server 2005 Express Edition2005-11-07[10]2011-04-12[11]2016-04-12[11]Windows 2000 Service Pack 4, Windows XP Service Pack 2, Windows Server 2003 Service Pack, Windows 7 Service Pack 1 (only SQL Server 2005 Express Edition SP4)[12]
SQL Server 2008 Express2009-02-08[13]2014-07-08[14]2019-07-09[14]Windows XP Service Pack 2, Windows XP Service Pack 3, Windows Vista, Windows Vista Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008[15]
SQL Server 2008 R2 Express2010-04-16[16]2014-07-08[17]2019-07-09[17]Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2[18]
SQL Server 2012 Express2012-05-14[19]2017-07-11[20]2022-07-12[20]Windows Vista Service Pack 2, Windows 7, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2008,[21] Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2[22]
SQL Server 2014 Express2014-04-01[23]2019-07-09[24]2024-07-09[24]Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows 10, Windows Server 2008 SP2,[25] Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2[26]
SQL Server 2016 Express2016-06-01[27]2021-07-13[28]2026-07-14[28]Windows 8, Windows 8.1, Windows 10, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016
SQL Server 2017 Express2017-09-29[29]2022-10-11[30]2027-10-12[30]Windows 8, Windows 8.1, Windows 10, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016*,
Red Hat Enterprise Linux 7.3 or 7.4, SUSE Enterprise Linux Server v12 SP2, Ubuntu 16.04LTS,
Docker Engine 1.8+ (on Windows, Mac, or Linux)
  • 並不包括 Windows Server 2016 "Essentials" Edition

安裝版本

SQL Server Express 2017 或 2019,SQL Server Express有三款安裝版本:

  • 標準的SQL Server Express,或称Express Core: SQL Server Engine only
  • 高級版本(with Advanced Services),或称Express Advanced:还包括有Reporting services及全文檢索(Full Text Service),在舊版本均包括在標準安裝版本內。
  • LocalDB:比標準版本更輕便的數據庫。lightweight version of Express Edition with all of its programmability features, but runs in user mode。从SQL Server 2012版开始有了LocalDB。在Visual Studio 2019安装中,带有SQL Server Express 2016 LocalDB

資料庫管理工具

  • Navicat for SQL Server页面存档备份,存于 是一套付費軟體,專為 Microsoft SQL Server 設計的強大資料庫管理及開發工具。它可以用於任何版本的 SQL Server 資料庫(包括SQL Server Express[31]),並支援大部份 SQL Server 的功能,包括觸發器、索引、檢視等。

工具

  • SQL Server Management Studio Express,可用來管理 SQL Server Express 實體。
  • SQL Server Reporting Service Express,簡易版的 SQL Server Reporting Service。
  • SQL Server Configuration Manager,可用來管理 SQL Server Express 的連線組態與服務。
  • Business Intelligence Development Studio Express,可用來開發 Reporting Service Express 的報表。

编程接口

以ADO.Net为例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Connection
{
    class Program
    {
        static void Main(string[] args)
        {
            //构造连接字符串
            SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder();
            connStr.DataSource = @".\SQLEXPRESS";
            connStr.InitialCatalog = "master";
            connStr.IntegratedSecurity = true;

            SqlConnection conn = new SqlConnection();//创建连接对象
            conn.ConnectionString = connStr.ConnectionString;//设置连接字符串

            conn.Open();//打开连接

            if(conn.State == ConnectionState.Open)
            {
                Console.WriteLine("Database is linked.");
                Console.WriteLine("\nDataSource:{0}",conn.DataSource);
                Console.WriteLine("Database:{0}",conn.Database);
                Console.WriteLine("ConnectionTimeOut:{0}",conn.ConnectionTimeout);
            }

            conn.Close();//关闭连接
            conn.Dispose();//释放资源

            if(conn.State == ConnectionState.Closed)
            {
                Console.WriteLine("\nDatabase is closed.");
            }

            Console.Read();
        }
    }
}

对于较高版本,如SQL Server Express大于版本2010的,可以通过在Visual Studio,依次点击“视图”(菜单栏)->“服务器资源管理器(Server Explorer)”,进入“服务器资源管理器”窗口。右键点击“数据连接(Data Connection)”,在弹出的上下文菜单中选择“添加连接(Add Connection)”,在弹出的窗口中将Data Source选择为Microsoft SQL Server,“服务器名”设置为(LocalDb)\MSSQLLocalDB,附加服务器文件为具体的mdf文件并点击确定。此时,通过Microsoft SQL Server(SQL Client)方式访问指定的mdf文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection();
            connection.ConnectionString =
                @"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=D:\apps\Documents\NORTHWND.mdf;Integrated Security = True;Connect Timeout = 30;";                
            connection.Open();
            if (connection.State == ConnectionState.Open)
            {
                Console.WriteLine("Database is linked.");
                Console.WriteLine("DataSource:{0}", connection.DataSource);
                Console.WriteLine("Database:{0}", connection.Database);
                Console.WriteLine("ConnectionTimeOut:{0}", connection.ConnectionTimeout);
            }
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Employees", connection);
            DataTable table = new DataTable();
            adapter.Fill(table);
            var result = (from row
                          in table.Rows.Cast<DataRow>()
                          select
                          new { ID = (int)row[0], LastName = (string)row[1], FirstName = (string)row[2] });
            result.ToList().ForEach(x => Console.WriteLine($"{x.ID},{x.LastName},{x.FirstName}"));
        }
    }
}

对于较低版本,如SQL Server Express 2005的mdf文件,可以直接用如下connection string打开访问(可能需要administrator权限):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection();
            connection.ConnectionString =
                @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\apps\Documents\NORTHWND.mdf;Integrated Security = True;Connect Timeout = 30;";                
            connection.Open();
            if (connection.State == ConnectionState.Open)
            {
                Console.WriteLine("Database is linked.");
                Console.WriteLine("DataSource:{0}", connection.DataSource);
                Console.WriteLine("Database:{0}", connection.Database);
                Console.WriteLine("ConnectionTimeOut:{0}", connection.ConnectionTimeout);
            }
        }
    }
}

參考資料

  1. . Msdn.microsoft.com. [2019-04-03]. (原始内容存档于2017-05-27).
  2. . Msdn.microsoft.com. 2017-05-24 [2019-04-03]. (原始内容存档于2017-12-11).
  3. . [2019-06-06]. (原始内容存档于2017-09-28) (英语).
  4. . [2010-06-22]. (原始内容存档于2010-09-27).
  5. . [2019-06-06]. (原始内容存档于2011-07-17).
  6. . Microsoft. [28 March 2012]. (原始内容存档于2016-03-17).
  7. . MSDN. November 2008 [2008-11-25]. (原始内容存档于2008-12-11).
  8. . MSDN. 2004-01 [2007-01-15]. (原始内容存档于2007-04-23) (英语).
  9. . Microsoft.com. 2012-11-09 [2019-04-03]. (原始内容存档于2019-04-03).
  10. . [26 December 2012]. (原始内容存档于2013-03-07).
  11. . [26 December 2012]. (原始内容存档于2013-04-04).
  12. . Microsoft Download Center. [2017-04-07]. (原始内容存档于2017-04-08).
  13. . [26 December 2012]. (原始内容存档于2013-03-06).
  14. . [26 December 2012]. (原始内容存档于2013-04-03).
  15. . Microsoft.com. 2009-02-08 [2019-04-03]. (原始内容存档于2019-04-03).
  16. . [26 December 2012]. (原始内容存档于2013-03-05).
  17. . [26 December 2012]. (原始内容存档于2013-04-04).
  18. . msdn.microsoft.com. [2017-10-16]. (原始内容存档于2017-10-16) (英语).
  19. . [26 December 2012]. (原始内容存档于2013-03-07).
  20. . [26 December 2012]. (原始内容存档于2013-04-04).
  21. . [6 June 2017]. (原始内容存档于2017-11-11).
  22. . Microsoft Download Center. [2017-04-07]. (原始内容存档于2017-04-08).
  23. . [11 April 2014]. (原始内容存档于2014-04-13).
  24. . [11 April 2014]. (原始内容存档于2014-07-23).
  25. . [30 June 2017]. (原始内容存档于2017-05-27).
  26. . Microsoft Download Center. [2017-04-08]. (原始内容存档于2017-05-04).
  27. . [2016-07-02]. (原始内容存档于2016-08-09).
  28. . [2014-10-29]. (原始内容存档于2014-07-23).
  29. . [2019-06-06]. (原始内容存档于2019-06-17).
  30. . [2019-06-06]. (原始内容存档于2019-01-19).
  31. . Navicat Community. 2014-01-08 [2019-07-09]. (原始内容存档于2019-07-09) (英语).

參看

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.