群里有人问 MSSQL 和 MySQL 是不是同一家的两个版本。不是,名字像,出身完全不同。
mssql 是 Microsoft SQL Server 的常见缩写,微软的关系型数据库。它主要跑在 Windows 上,2017 年起也有 Linux 版本。默认端口 1433,图形管理工具是 SSMS,命令行用 sqlcmd。
版本和免费界限
Express 版免费,但限制很硬:单个数据库最大 10GB,内存和 CPU 核数也有上限,适合学习和中小站点。再往上是 Standard 和 Enterprise,按核心数授权,价格不低。开发测试可以用 Developer 版,功能和 Enterprise 一样,但不能用于生产。
和 MySQL 的语法差异
- 取前几条:SQL Server 用 SELECT TOP 10,MySQL 用 LIMIT 10。
- 当前时间:GETDATE() 对 NOW()。
- 自增列:IDENTITY(1,1) 对 AUTO_INCREMENT。
- 字符串拼接:用加号对 CONCAT()。
连接串写法也不同,常见形式是 Server=127.0.0.1,1433;Database=test;User Id=sa;Password=你的密码。端口和实例名之间用逗号,这是 SQL Server 特有的写法,照抄 MySQL 的配置过去连不上。
选型和迁移要注意什么
整套系统跑在 Windows 上,用 .NET 开发,需要报表服务或者定时同步任务,mssql 配套最顺。反过来,预算紧、要跨平台、团队熟 MySQL,就没必要硬上。选型看现有技术栈,不看哪个名字更眼熟。
另外 sa 账号别拿来跑应用,建独立登录名并只给必要权限。这条在哪个数据库上都一样,只是 sa 权限太大,出事就是整台实例。
备份和恢复也和 MySQL 不同。SQL Server 用 BACKUP DATABASE 生成 .bak 文件,恢复用 RESTORE DATABASE;MySQL 那边更多是 mysqldump 导出 SQL 文本。迁移时不能直接把 .bak 丢给 MySQL,表结构、索引、自增都要重新对一遍。
字符集方面,SQL Server 常用 nvarchar 存中文,MySQL 这边是 utf8mb4,字段长度的含义也不一样。