没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2020-07-10 09:22:45.590|阅读 315 次
概述:本文介绍了所有这些任务,并演示了使用SQL Compare可以实现的功能。在随后的文章中,我将显示任务槽到自动SQL Change Automation过程中。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
SQL Compare是一款比较和同步SQL Server数据库结构的工具。现有超过150,000的数据库管理员、开发人员和测试人员在使用它。当测试本地数据库,暂存或激活远程服务器的数据库时,SQL Compare将分配数据库的过程自动化。
将数据库置于源代码管理中
我们要做的下一件事是将当前版本的Pubs放入源代码管理(GitHub)中。我只是使用SQL Compare来做到这一点(请参阅使用SQL Compare的追溯数据库源控件),但是您可能更喜欢使用SQL Source Control。
将当前版本的Pubs数据库设置为源,将新创建的GitHub目录的Build子目录设置为目标。
然后,我在version.json文件中添加相同的起始版本号“ 2.1.5” 。这是Pubs项目的整体版本(与数据库构建版本相同),因此我们将文件放置在GitHub项目的基本文件夹中(使用自述文件)。
{ "$schema": "//raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", "version": "2.1.5" }最后,在我们的开发服务器上建立一个开发数据库。它从与当前版本相同开始。在开发过程中,您可以随意随意销毁和重建该副本。您可以通过从源代码构建新版本,然后填充当前版本的测试数据来创建此副本,或者如果它位于同一服务器上,则可以使用“杀死并填充”方法重复填充数据以进行测试。如果您经常执行此任务,则需要看一下 SQL Clone, 因为它使一切变得非常容易。
我们决定对我们的开发数据库进行一些紧急更新。我们将只更新pub_info具有一些过时数据类型的表,以正确处理二进制徽标和一些Unicode信息。首先,我们尝试使用SSMS的表设计器,但拒绝这样做:
我们改为通过SQL代码来完成此操作,如下所示:
ALTER TABLE dbo.pub_info ALTER COLUMN Logo varbinary(MAX) NULL; ALTER TABLE dbo.pub_info ALTER COLUMN PR_Info nvarchar(MAX) NULL;
当然,通常情况下,我们通常会对每个版本进行很多更改,但这仅说明了各个阶段。和我们一起承担。
经过大量测试(检查),并检查数据是否未更改,我们确定这是一个新版本,并将更新后的表放在源代码管理中,如下所示:
在这种情况下,我们需要做的就是在自动生成的脚本中添加一个小陷阱,这意味着我们不会在错误的版本上执行代码。
SET NUMERIC_ROUNDABORT OFF GO SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON GO SET XACT_ABORT ON GO SET TRANSACTION ISOLATION LEVEL Serializable GO BEGIN TRANSACTION; --inserted code Declare @version varchar(25); SELECT @version= Coalesce(Json_Value( ( SELECT Convert(NVARCHAR(3760), value) FROM sys.extended_properties AS EP WHERE major_id = 0 AND minor_id = 0 AND name = 'Database_Info'),'$[0].Version'),'that was not recorded'); IF @version <> '2.1.5' BEGIN RAISERROR ('The Target was at version %s, not the correct version (2.1.5)',16,1,@version) SET NOEXEC ON; END --end of inserted code GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[pub_info]' GO IF @@ERROR <> 0 SET NOEXEC ON GO ALTER TABLE [dbo].[pub_info] ALTER COLUMN [logo] [varbinary] (max) NULL GO IF @@ERROR <> 0 SET NOEXEC ON GO ALTER TABLE [dbo].[pub_info] ALTER COLUMN [pr_info] [nvarchar] (max) COLLATE Latin1_General_CI_AS NULL GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating extended properties' GO BEGIN TRY EXEC sp_addextendedproperty N'Database_Info', N'[{"Name":"Pubs","Version":"2.1.6","Description":"The Pubs (publishing) Database supports a fictitious bookshop.","Modified":"2020-05-15T13:30:11.697","by":"RED-GATE\\Tony.Davis"}]', NULL, NULL, NULL, NULL, NULL, NULL END TRY BEGIN CATCH DECLARE @msg nvarchar(max); DECLARE @severity int; DECLARE @state int; SELECT @msg = ERROR_MESSAGE(), @severity = ERROR_SEVERITY(), @state = ERROR_STATE(); RAISERROR(@msg, @severity, @state); SET NOEXEC ON END CATCH GO COMMIT TRANSACTION GO IF @@ERROR <> 0 SET NOEXEC ON GO -- This statement writes to the SQL Server Log so SQL Monitor can show this deployment. IF HAS_PERMS_BY_NAME(N'sys.xp_logevent', N'OBJECT', N'EXECUTE') = 1 BEGIN DECLARE @databaseName AS nvarchar(2048), @eventMessage AS nvarchar(2048) SET @databaseName = REPLACE(REPLACE(DB_NAME(), N'\', N'\\'), N'"', N'\"') SET @eventMessage = N'Redgate SQL Compare: { "deployment": { "description": "Redgate SQL Compare deployed to ' + @databaseName + N'", "database": "' + @databaseName + N'" }}' EXECUTE sys.xp_logevent 55000, @eventMessage END GO DECLARE @Success AS BIT SET @Success = 1 SET NOEXEC OFF IF (@Success = 1) PRINT 'The database update succeeded' ELSE BEGIN IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION PRINT 'The database update failed' END GO
我们以当前版本(2.1.5)为目标测试经过编辑的迁移脚本。如果一切顺利,则它将目标的版本标记更新为新版本,因为比较的源已经拥有它。如果一切都不对,您将得到这个…
我们将当前版本与代表当前生产版本的参考版本进行比较(在本例中使用SQL数据比较),发现数据没有变化,但是参考数据库现在处于新版本。我们保存迁移脚本并在GitHub上更新项目版本号:
{ "$schema": "//raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", "version": "2.1.6" }
最后,我们将包含新版本的构建和脚本的本地GitHub目录推送到源代码管理。
相关产品推荐:
SQL Prompt:SQL语法提示工具
SQL Toolbelt:Red Gate产品套包
SQL Monitor:SQL Server监控工具
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:CADEditorX是一个ActiveX组件,用于在支持ActiveX和COM技术的任何开发环境中,将CAD功能添加到网页或正在开发的应用程序中。同时可以查看、编辑、转换、打印和测量DWG、DXF、SVG、HPGL、PDF、STEP、IGES、STL和其他CAD文件。
DotNetBrowser 是 TeamDev 开发的商业跨平台.NET 库,基于 Chromium,可将浏览器控件嵌入 Windows Forms 等桌面应用,支持多系统运行。能实现网页展示、DOM 操作、JS 运行等功能,还适用于无头服务器任务,是开发中实现浏览器相关功能的有力工具。
本教程将为大家介绍如何使用MyEclipse的可视化JSF编辑器设计JSP,欢迎下载最新版IDE体验!
在处理 Excel 文件时,除了常见的数据读写操作,有时还需要进一步控制 Excel 文件在打开时的显示状态。本教程将介绍如何使用 Java 和 Spire.XLS for Java 库设置 Excel 文件中的活动工作表和活动单元格。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢