Microsoft SQL Server Express微软公司所开发的关系数据库产品SQL Server的免费下载版本,可自由下载、分发(需经注册)及使用。这个版本的设计是专门为嵌入式系统或较小型的程序而设计。本产品可溯源至过往随同SQL Server 2000软件分发的Microsoft Database Engine (MSDE),用以让程序开发者在其测试其程序时建立一个系统需求较低的测试环境。自SQL Server 2005开始,本产品改用现时的名称。

Quick Facts 开发者, 当前版本 ...
Microsoft SQL Server Express
在一台Windows Server 2019VM上安装SQL Server 2017 Express的画面缩略图。
在一台Windows Server 2019VM上安装SQL Server 2017 Express的画面缩略图。
开发者微软
当前版本SQL Server 2017 Express(2017年11月6日,​6年前​(2017-11-06
编程语言C语言C++
操作系统Microsoft WindowsLinux
平台IA-32IA-64
> 512 MB RAM
.NET Framework 4.0英语.NET Framework 4.0[1]
语言英文、中文、法文、德文、意大利文、日文、韩文、巴西葡文、俄文及西班牙文
类型关系数据库管理系统
许可协议专有软件[2]
网站www.microsoft.com/en-us/sql-server/sql-server-editions-express
Close

它继承了多数的SQL Server功能与特性,像是Transact-SQLSQL CLR等,相当适合使用在小型的网站,或者是小型的桌面型应用程式,它也可以和 SQL Server 集成,作为数据库复制英语Replication_(computing)#DATABASE(Replication)的订阅端。

功能与限制

SQL Server Express提供了付费的完整版本的多项功能[3],然而其技术限制使之无法适用于大规模的部署。这两个版本的差异在于:

  • 数据库的大小限制:对SQL Server 2008 R2 Express、SQL Server 2012 Express、SQL Server 2014 Express、SQL Server 2016 Express、SQL Server 2019 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包括了几个数据库管理的图形用户界面工具:

MSDE 没有管理接口

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

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

过往版本

More information 版本号码, 发行日期 ...
Microsoft SQL Server Express Version History
版本号码 发行日期 主流支持完结日期 延伸支持完结日期 支持操作系统
SQL Server 2005 Express Edition 2005-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 Express 2009-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 Express 2010-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 Express 2012-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 Express 2014-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 Express 2016-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 Express 2017-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)
Close
  • 并不包括 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:比标准版本更轻便的数据库。具有全部的编程特性,但在用户模式下运行。只能在本地连接数据库。从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包括Express版本,有3种到数据库伺服器的连接(connection)方式:

  • 共享内存:仅限于本地访问
  • 命名管道:
  • TCP/IP通信:

其中后两种需要在SQL Server Configuration Manager软件中,SQL Server Network Configuration下的“Protocols for SQLEXPRESS”,把Nameed Pipes与TCP/IP手工置为Enable。对于第三种,还需要在上述的配置时,在TCP/IP Properties的IP Addresses中把IPALL的“TCP Port”设为1433.

工具

  • 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 的报表。
  • 命令行工具sqlcmd,如下:
$sqlcmd -S thisisaserver.com -U username
Password:
1> SELECT name FROM SYSOBJECTS WHERE xtype = 'U'
2> GO
name
--------
EquitySecMstr
(1 rows affected)
1>

LocalDB

LocalDB的全称是Microsoft SQL Server Express LocalDB。

安装

从Microsoft下载的SqlLocalDB.msi约54MB。也可以使用Microsoft SQL Server Express的安装程序,在第一页选择第3项“Download Media”,随后在下一页选择第3项“localDB(54MB)”即可下载。

使用

命令行工具SqlLocalDB,用于创建和管理LocalDB的实例[32]

C:\> SqlLocalDb info	
#输出默认实例名字:MSSQLLocalDB			

#创建一个实例(相当于一个server):
C:\> SqlLocalDb create "MyInstance"	
#输出:LocalDB instance "MyInstance" created with version 15.0.2000.5.

C:\> sqllocaldb info "MyInstance"
#输出:
#Name:               MyInstance
#Version:            15.0.2000.5
#Shared name:
#Owner:              MyDomainName\MyUserName
#Auto-create:        No
#State:              Stopped
#Last start time:    2022/3/9 19:04:41
#Instance pipe name:

C:\> sqllocaldb start "MyInstance"
#输出: LocalDB instance "MyInstance" started.
#类似的,可以有:
#C:\> SqlLocalDb stop "MyInstance"
#C:\> SqlLocalDb delete "MyInstance"

系统数据库文件存储于本地AppData路径下,通常为C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\

LocalDB 是在Windows当前用户的用户进程中运行。而SQL Server Express是作为Windows Service运行。所以,LocalDB的数据存储是Windows用户私有的。在Visual Studio启动IIS Express也是当前用户的用户进程执行,所以可以访问LocalDB。[33]

把私有的数据存储变为共享实例。例如,原存储为“(localdb)\v11.0”:

sqllocaldb share v11.0 IIS_DB

现在为公共名字IIS_DB。该电脑所有用户均可以用“(localdb)\.\IIS_DB”访问该实例。注意,名字中的前缀“\.”表示这是共享实例名字。即其保存的文件的路径不会放在特定用户的documents目录中。连接字符串可为:

Data Source=(localdb)\.\IIS_DB;Initial Catalog=OldFashionedDB;Integrated Security=True

在Visual Studio中通过 SQL Server Object Explorer 连接上述localDB实例,在query窗口执行下述脚本可以授予“”账号数据实例的管理员权限:

create login [IIS APPPOOL\ASP.NET v4.0] from windows;
exec sp_addsrvrolemember N'IIS APPPOOL\ASP.NET v4.0', sysadmin

SQLCMD使用的连接字符串

C:\>sqlcmd -S "(localdb)\MyInstance" 就可以在交互环境下执行查询:

SELECT @@VERSION;
GO
CREATE DATABASE blat;
GO
USE blat;
GO
CREATE TABLE dbo.splunge(Mort int);
GO
INSERT dbo.Splune(Mort) VALUES(1);
SELECT * FROM dbo.splunge;
GO

Microsoft SQL Server Management Studio连接LocalDB

Server Name使用(localdb)\MyInstance

编程接口

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;";
              //@"Data Source=(localdb)\MyInstance;InitialCatalog =blat;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);
            }
        }
    }
}

Python

需要安装pymssql包

from sqlalchemy import create_engine
import pandas as pd
 
user = 'username'
pwd = 'password'
url = 'thisisaserver.com'
port = 1433
db = 'database'
engine = create_engine(f'mssql+pymssql://{user}:{pwd}@{url}:{port}/{db}')

sql_stmt = "SELECT name FROM SYSOBJECTS WHERE xtype = 'U'"
pd.read_sql_query(sql_stmt, engine)

参考资料

参看

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.