1. 问题背景

最近老板在AWS上创建了一个Microsoft SQL Server,给我分配一个用户名和密码让我处理数据。然而我以前一直用的是MYSQL,对新数据库突然有些手足无措。在研究了一段时间后,我总结了三种连接到SQL Server的方式,分别是:

  • Python利用sqlalchemy包来连接
  • SSMS (Microsoft SQL Server Management Studio)
  • sqlcmd

一般SQL Server指的就是Microsoft SQL Server。

2. 连接SQL Server所需必要条件和参数

连接本地的SQL Server直接用SSMS管理是比较简单的。本文只讨论远程连接网上的SQL Server。其中必要条件那就是你要有一个运行在网上的SQL Server,然后需要的必要参数有:

  • SQL Server的链接
  • 用户名
  • 密码

这三个参数都很容易理解,而且需要管理员提前配置好。还有另外两个参数:

  • 端口:默认1433
  • 数据库名称

SQL Server的默认端口是1433,所以有时候可以缺省。一个服务器上会有多个数据库,但是在SQL Server里,一个用户是有一个默认数据库的,所以在管理员配置好以后,也可以缺省。

3. Python的sqlalchemy包

from sqlalchemy import create_engine

user = 'username'
pwd = 'password'
url = 'thisisaserver'
port = 1433
db = 'database'
engine = create_engine(f'mssql+pymssql://{user}:{pwd}@{url}:{port}/{db}')

执行以下代码来测试是否连接顺利

import pandas as pd

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

如果此代码运行没有报错,那么连接成功

4. SSMS

SSMS是Microsoft自己开发的图形化管理工具,自己去官网下载就好了,也是免费的。启动SSMS以后,你会看到如下界面

输入链接,用户名,密码然后链接就可以了,图中链接后面端口1443可以缺省。

注意:在链接和端口之间是逗号,而不是句号。

5. sqlcmd

大家也可以看出来sqlcmd是命令行命令,用法是

$sqlcmd -S thisisaserver -U username
Password:
1> SELECT name FROM SYSOBJECTS WHERE xtype = 'U'
2> GO
name
--------
EquitySecMstr

(1 rows affected)
1>

-S是数据库链接的意思,-U是用户名的意思。和MYSQL不同,在这里除了要用分号结尾以后,还有输入GO才会显示结果(不区分大小写)。

如果能看到1>,那么就成功连接到数据库上了!

 

 

更多推荐

连接SQL Server的三种方式