SQL Server Express

Microsoft SQL Server Express是微软公司所开发的关系数据库产品SQL Server的免费下载版本，可自由下载、分发（需经注册）及使用。这个版本的设计是专门为嵌入式系统或较小型的程式而设计。本产品可溯源至过往随同SQL Server 2000软件分发的Microsoft Database Engine (MSDE)，用以让程式开发者在其测试其程式时建立一个系统需求较低的测试环境。自SQL Server 2005开始，本产品改用现时的名称。
它继承了多数的SQL Server功能与特性，像是Transact-SQL、SQL CLR等，相当适合使用在小型的网站，或者是小型的桌面型应用程式，它也可以和 SQL Server 整合，作为（Replication）的订阅端。
功能与限制.
SQL Server Express提供了付费的完整版本的多项功能，然而其技术限制使之无法适用于大规模的部署。这两个版本的差异在于： 
MSDE有一个并发工作负债监控器并限制在少量用户并发访问，SQL Server Express没有这个并发限制。
SQL Server Express包括了几个数据库管理的图形用户界面工具：
MSDE则没有管理介面
SQL Server Express不包括全功能标准版的几个工具：
SQL Server Express的各版本是可以远程连接的，但需要用户做一定的配置。
过往版本.
安装版本.
SQL Server Express 2017 或 2019，SQL Server Express有三款安装版本：
到服务器的连接.
SQL Server包括Express版本，有3种到数据库服务器的连接（connection）方式：
其中后两种需要在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.
工具.
 $sqlcmd -S thisisaserver.com -U username
 Password:
 1&gt; SELECT name FROM SYSOBJECTS WHERE xtype = 'U'
 2&gt; GO
 name
 EquitySecMstr
 (1 rows affected)
 1&gt;
LocalDB.
LocalDB的全称是Microsoft SQL Server Express LocalDB。
安装.
从Microsoft下载的SqlLocalDB.msi约54MB。也可以使用Microsoft SQL Server Express的安装程序，在第一页选择第3项“Download Media”，随后在下一页选择第3项“localDB(54MB)”即可下载。
使用.
命令行工具SqlLocalDB，用于创建和管理LocalDB的实例。
C:\&gt; SqlLocalDb info 
C:\&gt; SqlLocalDb create "MyInstance" 
C:\&gt; sqllocaldb info "MyInstance"
C:\&gt; sqllocaldb start "MyInstance"
系统数据库文件存储于本地AppData路径下，通常为codice_1。
LocalDB 是在Windows当前用户的用户进程中运行。而SQL Server Express是作为Windows Service运行。所以，LocalDB的数据存储是Windows用户私有的。在Visual Studio启动IIS Express也是当前用户的用户进程执行，所以可以访问LocalDB。
把私有的数据存储变为共享实例。例如，原存储为“(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使用的连接字符串.
codice_2
就可以在交互环境下执行查询：
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使用codice_3
编程接口.
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，依次点击“视图”(菜单栏)-&gt;“服务器资源管理器（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&lt;DataRow&gt;()
 select
 new { ID = (int)row[0], LastName = (string)row[1], FirstName = (string)row[2] });
 result.ToList().ForEach(x =&gt; 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)