1. MSSQL介质家族简介
MSSQL Server是一款商业性的数据库管理系统,最早由Sybase公司开发,后来被微软公司并购。它支持多种数据处理方式,从实时在线事务处理到数据仓库数据分析,包容流行的SQL语句及将该语句嵌入Windows环境的T-SQL。同时,它也支持多种编程语言,如C++和C#。在各种各样的操作系统上,包括Windows和Linux,都有MSSQL Server的版本可以使用。
介质家族是MSSQL Server集成开发环境(Integrated Development Environment,也即:SQL Server Management Studio,以下简称SSMS)中的一个功能。在使用SSMS的时候,这个功能负责定义将何种数据从哪里引入以用于数据库中的表。尽管“介质”在许多方面有着拓展到磁盘和文件中的意思,但是在这个上下文中,它主要指可刻录的光盘(CD/DVD)。也就是说,介质家族的正式名称是“CD/DVD介质家族”。
需要注意的是,除了可以从CD/DVD介质家族中获得数据外,在Microsoft Azure Blob存储中,Blob也可以作为介质来使用。
2. MSSQL缺失的介质家族
对于MSSQL Server在SSMS中生成的数据库脚本,我们通常会将这些脚本保存在本地磁盘上,供日后引用。当需要将一个新的数据库部署到其他机器时,我们可以使用SSMS的“生成脚本向导”功能来生成一个包含数据库内容的SQL脚本。通常情况下,我们会将这个脚本保存到一个可移动的介质上,然后在目标机器上运行。这时,“CD/DVD介质家族”就可以扮演非常重要的角色。
然而,如果你是一个有经验的MSSQL Server用户,你就会遇到这样一个问题:在SSMS的“生成脚本向导”功能中,MSSQL缺失了“CD/DVD介质家族”。
在SSMS 18.5版本中,你可能会看到如下截图中的界面:
当你点击“生成脚本向导”时,你会看到舞台2,“选择对象”的界面。在这个界面中,你可以选取需要生成脚本的对象。这些对象可能包括表、视图、函数、存储过程等。在这个界面的右上角,你会看到一个下拉菜单,可以用来选择生成脚本的方式。其中,“文件”指将脚本保存到磁盘上,“索引(在压缩文件中)”则是将脚本存储在已经压缩过的文件中。但是,在这个下拉菜单中,你不会看到“CD/DVD介质家族”的选项。
3. 解决MSSQL缺失介质家族的问题
3.1. 使用老版本的SSMS
如果你使用的是SSMS 18.5或之后的版本,那么你将无法找到“CD/DVD介质家族”的选项。但是,在SSMS 18.4及以前的版本中,这个选项是存在的。所以,一个很简单的解决方案就是下载安装旧版本的SSMS。但是,这种方法并不推荐,因为旧版本的SSMS可能存在安全问题或其它问题,而且应该避免出现多个版本的SSMS混淆的情况。
假设你已经选择了使用旧版本的SSMS,那么接下来,你需要做的就是按照“生成脚本向导”的流程生成脚本,并选择“CD/DVD介质家族”作为介质。稍等片刻,你就可以拿着生成的脚本去部署新的数据库了。
3.2. 使用其他工具
如果你不想使用老版本的SSMS,或者你需要支持新版本的MSSQL Server,那么你可以考虑使用其他的工具来替代“CD/DVD介质家族”。
一个流行的替代方案是使用ISO镜像。你可以使用任何可以制作ISO文件的软件来制作一个包含数据库脚本的ISO镜像。然后,你就可以将ISO镜像刻录到光盘或将其保存到USB闪存盘或外部硬盘上。接下来,你可以在需要部署数据库的机器上挂载ISO镜像,然后运行其中的脚本。需要注意的是,在将ISO镜像刻录到光盘或保存到USB闪存盘时,你需要选择文件系统为“UDF”(通用磁盘格式),否则可能会遇到兼容性问题。
此外,如果你使用的是Microsoft Azure的云数据库服务,那么你可以使用Azure Blob存储来替代“CD/DVD介质家族”。在Azure Blob存储中,你可以创建一个容器来存储数据库脚本,然后在需要部署数据库的机器上下载这些脚本,再在MSSQL Server中运行它们。需要注意的是,使用Azure Blob存储可能会产生额外的费用,而且也需要对Azure Blob存储进行额外的配置。
4. 小结
MSSQL Server提供了一个非常强大的数据库管理系统,它的SSMS集成开发环境也提供了很多方便的功能来管理数据库。其中,“CD/DVD介质家族”是其中一个重要的功能。然而,在SSMS 18.5及以后的版本中,MSSQL缺失了“CD/DVD介质家族”的选项,这会给用户带来不便。为了解决这个问题,我们可以使用旧版本的SSMS,或者使用ISO镜像或Azure Blob存储等其他工具来替代“CD/DVD介质家族”。
注:以下是SQL脚本的示例代码,用于在MSSQL Server中创建一个名为“example”的表:
CREATE TABLE example (
id INT PRIMARY KEY IDENTITY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL
);