本文讲述了在数据库开发过程中,在Azure Data Studio中集中参考表,以方便部署到多个环境,如开发、测试和生产。
此外,对Azure Data Studio工具感兴趣的读者将了解到拥有一个坚实的数据库开发策略对参考数据管理的重要性,而这一点往往被忽视或没有被注意到。参考数据对任何数据库开发和测试的作用是不可否认的,但同时,集中管理参考数据的策略也是非常关键的,以避免可能发生的任何冲突。
关于参考表
在任何数据库设计中都有一些参考表的空间,因为没有它们,数据库就没有什么意义。让我们快速了解它们。
什么是参考表?
参考表是一个包含主表信息的表。换句话说,参考表包含一组特定的数据,供其他表使用。
什么是参考数据?
参考表所包含的数据被称为参考数据。
参考数据和参考表之间有什么区别?
从技术上讲,参考表是指结构(列名、数据类型等),而参考数据是指该结构所包含的信息(蓝色、绿色、白色等)。
什么是参考表管理?
参考表管理是一种管理参考表的方式,使其在不同的环境中不会失去质量,并作为一个关键,将参考数据填充到任何目标环境中,以达到任何目的,帮助保存参考数据的标准。
参考表的例子
参考表可以是任何包含其他表信息的表,例如,我们可以说颜色是一个参考表,包含不同类型的颜色,如蓝色、白色、绿色等。现在这个表可以用在另一个叫做Watch的表中,以定义具有不同颜色的不同手表。请记住,你可以在Azure Data Studio中简单地创建一个参考表,就像你创建任何其他表一样。
参考表的图示如下。
集中参考表的数据库开发策略
现在让我们谈谈核心策略,我们有,集中一个参考表或一组属于我们感兴趣的数据库的参考表。
我们只需要在参考表被部署到多个环境中用于多种用途之前,想出一种控制参考表的方法。换句话说,我们希望集中管理参考表的设计和数据,这样它就可以很容易地从一个环境移植到另一个环境。
感兴趣的环境
我们主要对以下三种类型的环境感兴趣。
- Dev (开发环境)
- 测试(测试环境)
- Prod (生产环境)
现在,参考数据的集中管理意味着我们必须能够从一个中央地方设置上述环境,该地方也拥有该信息的单一真实来源。
SQL数据库项目方式
获得对参考表和参考数据流的控制的方法之一是转向基于状态的开发,这意味着你应该从SQLSQL数据库项目中建立你的数据库,因为这时数据库项目的责任是建立、管理和发布参考表到多个环境,这也是choSQLng SQL数据库项目的核心专长之一。换句话说,你应该在SQL数据库项目中定义你的参考表solSQL,然后它将从那里被管理。
参考数据结构和数据脚本
如果你已经决定使用SQL数据库项目来管理你的参考表和数据,那么你可以把你的参考表作为数据脚本,由数据库项目部署来执行,以便在参考表创建后填充它们。
这通常是一个两步的过程。
- 你在数据库项目中定义你的参考表
- 你将你的参考数据定义为数据脚本,一旦项目被部署到任何所需的环境中,就可以填充你的参考表
处理不同环境下的参考数据差异
在数据库项目内保留参考表的最大挑战之一是了解如何处理在不同环境下参考数据的差异情况。
例如,你开始有一个包含不同的两种颜色蓝色和绿色信息的参考表,在一个理想的情况下,你希望在每个环境中都有这两行,但是如果你发现在开发中是蓝色、绿色、黄色,在测试中是蓝色、绿色、橙色,在生产中是蓝色、绿色、红色,怎么办?换句话说,如果你在三个不同的环境中发现三个不同的版本,那么调和参考数据的策略是什么?
例如,如果你说你是通过一个数据库项目来管理参考表,那么拥有一套像样的行是可行的,因为生产可能会在空中挑选新的参考数据,所以我们必须限制自己在开发和测试中,他们应该有一致的参考数据,对于生产,我们只添加标准行,同时保持新添加的数据在那里不受影响。
好吧,在一天结束时,这完全取决于你的业务需求和偏好,但记住表面的事实,为什么你想限制在生产服务器上添加新的参考数据,因为它几乎总是一个自然的过程,除非你有例外情况。
让我们在Azure Data Studio中建立这个项目,然后自己看看情况如何。
在Azure Data Studio中开发集中式参考表和参考数据策略
你可以通过以下简单的步骤来开发一个快速参考表和数据策略。
- 创建一个新的SQL数据库项目
- 在数据库项目中创建一个参考表
- 在数据库项目中创建一个参考数据文件夹结构
- 添加一个数据脚本,将参考表填充到参考数据文件夹中
- 添加一个部署后脚本
- 在部署后脚本中调用数据脚本
- 运行构建以查看一切正常
- 将项目发布到多个环境(数据库)中
- 检查参考表和参考数据
前提条件
如果你还不熟悉SQL数据库项目和所需的工具,请仔细阅读以下文章。
本文假设你已经满足了在Azure Data Studio中开始使用SQL数据库项目的要求(所需的扩展已经添加)。
创建一个新的SQL数据库项目
请打开Azure Data Studio,右键单击项目侧边栏,然后单击创建新项目。
创建一个名为BestLamps的新的SQL数据库项目,使用以下设置作为一般指导,同时你可以自由选择适合你要求的目标平台和位置。
在Azure Data Studio中建立的SQL数据库项目现在已经可以使用了。
在数据库项目中创建一个参考表
下一步是在项目中创建一个参考表,所以在项目(BestLampts)上点击右键,然后点击添加表,接着输入表名为Color。
使用以下SQL代码创建表Color。
-- Creating a reference table color
CREATE TABLE [dbo].[Color]
(
[ColorId] INT NOT NULL IDENTITY(1,1),
[Name] VARCHAR(50),
[Detail] VARCHAR(200),
CONSTRAINT PK_Color PRIMARY KEY (ColorId)
)
该表现在应该开始在数据库项目中显示了。
在数据库项目中创建一个参考数据文件夹结构
右键点击项目BestLamps,点击添加新文件夹 ,然后将文件夹命名为ReferenceData ,如下图所示。
在参考数据文件夹中添加数据脚本以填充参考表
一旦创建了所需的文件夹,请在ReferenceData文件夹中添加一个数据脚本,而该脚本必须定义一种向参考表(颜色)插入参考数据的方法。
现在,请记住,与在Visual Studio中做同样的事情相比,使用Azure Data Studio时,在SQL数据库项目中创建数据脚本有点棘手,因为你可能会遇到限制。
数据脚本应该包含填充参考表的插入脚本,但它必须在部署后脚本中调用,因为这样我们可以一次调用多个数据脚本(通过部署后脚本依次调用)。
右击ReferenceData文件夹,点击添加脚本,使用以下T-SQL代码添加一个新的脚本,名称为Color.data。
-- Color Reference Table Data Script
-- Remove data from table color
TRUNCATE TABLE dbo.Color
-- Add reference data to the table color
SET IDENTITY_INSERT Color ON
INSERT INTO dbo.Color
(ColorId,Name,Detail)
VALUES
(1,'Blue','This is blue color'),
(2,'Green','This is green color'),
(3,'Yellow','This is yellow color')
SET IDENTITY_INSERT Color OFF
数据库项目的结构应该是这样的。
我们需要把脚本的Build属性改为None,这样它就可以由Post Deployment脚本运行,要做到这一点,我们必须在项目上点击右键,然后点击编辑.sqlProj文件。
在项目文件中寻找以下一行代码。
<Build Include="ReferenceData\Color.data.sql" /></ItemGroup>
请将其替换为以下内容。
<None Include="ReferenceData\Color.data.sql" BuildAction="None" /></ItemGroup>
请保存你的修改,一旦你被要求在完成上述修改后重新加载项目,请按指示操作。
添加一个部署后脚本并在部署后脚本中调用数据脚本
通过右键单击数据库项目(BestLamps)并单击 "添加部署后脚本"来添加一个部署后脚本。
请启用SQL CMD并在部署后脚本中输入以下几行代码。
-- This file contains SQL statements that will be executed after the build script.
:r ".\ReferenceData\Color.data.sql"
运行构建,看是否一切正常
请右击项目(BestLamps)并点击Build以确保没有错误。
发布项目到多个环境(数据库)中
请设置适合你要求的目标平台(通过右键点击项目,点击改变目标平台),而在本攻略中,我们选择SQL Server 2017。
右键点击BestLamps SQL数据库项目,点击发布,然后设置发布环境,这可以是你的开发或测试服务器。
现在我们可以使用Azure Data Studio中相同的发布过程简单地指向我们的生产服务器,如果没有生产服务器,但我们可以用Prod postfix在同一服务器上发布生产数据库。
检查参考表和参考数据
最后,切换到Azure Data Studio中的服务器选项卡,找到最近发布的数据库。
让我们通过对BestLamps运行以下脚本来查询颜色表,如下所示。
-- View Color Reference Table (data)
SELECT c.ColorId,c.Name,c.Detail FROM dbo.Color c
输出如下。
恭喜你,我们已经成功实现了本攻略的目标,即使用Azure Data Studio集中管理参考表及其基础数据。
最后一句话
集中参考数据的策略可能因不同的专业场景而不同,我们实施了这样一种方法,在所有环境中都有类似的参考数据行,但使用模式比较工具来解决SQL数据库项目参考数据和BestLamps生产数据库之间的任何差异是绝对没问题的,这种情况下,你必须决定是包括还是排除生产环境。
然而,请记住,在一天结束的时候,不是参考数据策略只是工作,而是工作和符合你的业务需求的策略,再加上我把它留给你,以决定像Azure Data Studio这样的最佳工具的选择在帮助你实现你的业务目标方面有多大作用。