首页 » 99链接平台 » 用VS去创建SQL Server数据库项目(数据库项目创建导入触发器)

用VS去创建SQL Server数据库项目(数据库项目创建导入触发器)

admin 2024-11-24 04:30:23 0

扫一扫用手机浏览

文章目录 [+]

考虑这样的场景:多个开发人员正在为下一个版本的项目工作,其中一些人正在处理bug或添加新特性,这同样需要对数据库进行一些或许多更改。
大多数情况下,开发人员会手动记录DB(数据库)的更改。
有时他们会忽略一些在生产中造成成本的变化。
在许多情况下,Dev、UAT和production DB是不同的,这也是识别差异的麻烦。

市场上有很多工具可以用来比较数据库,但都是昂贵的或付费的解决方案。

因此,在本文中,我们将讨论并学习Visual Studio中的SQL Server数据库项目with,它是免费的。

用VS去创建SQL Server数据库项目(数据库项目创建导入触发器) 99链接平台
(图片来自网络侵删)

先决条件

Visual Studio(2013, 2015, 2017,或2019)和MS SQL Server。
我使用VS 2019和SQL Server 2017 Developer进行演示。

介绍

您可以创建一个新的数据库项目,并从现有数据库、.sql脚本文件或数据层应用程序(.bacpac)导入数据库模式。
然后,您可以调用用于连接数据库开发的相同的可视化设计器工具(Transact-SQL编辑器、表设计器),对脱机数据库项目进行更改,并将更改发布回生产数据库。
还可以将更改保存为稍后发布的脚本。
使用Project Properties窗格,您可以将目标平台更改为不同版本的SQL Server(包括SQL Azure)。

创建新的SQL Server数据库项目

打开Visual Studio并创建一个空白的解决方案,如下所示:

在解决方案下添加新项目

从左面板选择SQL Server和SQL Server数据库项目。
为项目提供一个名称(这里,我将名称作为SampleAccount.)。
该模板用于创建SQL server数据库。

下一步是从现有数据库导入数据库方案。

从项目的现有数据库、.sql脚本文件或数据层应用程序(.dacpac)导入数据库模式。

因此,右键单击项目并选择import。
有三个选项:数据层应用程序(.dacpac)、数据库、脚本(.sql)。

在这里,我使用Database选项,因为我将从MS SQL数据库导入,如下所示。

现在您将看到如下所示的屏幕。
此选项可用于提供连接字符串。
有从本地、网络或Azure选择数据库的选项,因此您可以根据您的数据库选择该选项。
或者,您可以输入服务器名称、身份验证类型和凭据直接连接到数据库服务器。
然后选择要导入并保存在项目中的数据库。

接下来,我们必须设置导入设置。
有一些选择,

导入应用程序范围的对象:这将导入表、视图、存储过程以及对象。
导入参考登录:与登录相关的导入。
导入权限:这将导入相关权限。
导入数据库设置:这将导入数据库设置。
文件夹结构:在项目中为数据库对象选择文件夹结构的选项。
每个文件夹的最大文件数:限制每个文件夹的文件数。

在我的例子中,我选择了如下所示的选项。

单击Start,将显示进度窗口,如下所示。

完成后,我们可以看到项目中的表、视图和存储过程,如下所示。

最后,我们成功地创建了SQL server数据库项目。
现在我们可以使用这个项目从解决方案本身发布和创建新的数据集。

现在,我将展示如何从这个SQL server数据库项目在SQL server中发布和创建新数据库。

发布以在SQL server中创建新数据库

我们可以使用具有相同模式的SQL Sever数据库项目从Visual Studio中轻松地直接创建新的数据库。

右键单击项目并选择publish选项,如下所示。

提供连接

服务器名称、身份验证类型、凭据。
如果要作为新数据库发布,则选择默认数据库或选择要发布的特定数据库。

您可以看到新数据库并发布SQL server数据库,如下所示。

让我们探索带有更多规则和选项的高级选项。

选项有:

部署的行为

部署数据库属性。
总是重新创建数据库。
如果可能发生数据丢失,则阻塞增量部署。
在单用户模式下执行部署脚本。
部署前备份数据库。
不要使用alter程序集语句来更新CLR类型。

此外,还有几个高级部署选项,如:使用目标排序、禁用和重新启用DDL触发器、不更改更改数据捕获对象、不更改复制对象、删除统计信息而不是源、包括复合对象、包括事务脚本、填充文件或文件组等几个选项,如下所示。

然后,在高级选项中单击ok并发布数据库。

现在,您的数据库已经在SQL server中创建,您可以登录到SQL server并进行检查,如下所示。

最后,我们成功地从Visual Studio、SQL server数据库项目中创建了一个数据库。

结论

在本文中,展示了如何在Visual Studio中创建SQL server数据库项目并导入SQL数据库。
我们可以使用这个项目模板从Visual Studio本身导入开发数据库并最终发布到UAT、产品或其他服务器。
此外,我们还探讨了数据库导入和发布过程中的一些高级选项。
对于这个项目,我们有一些额外的有用选项或用例,比如比较和识别两个数据库(开发和生产)中的差异,然后我们可以生成更新的脚本,或者直接从项目中更新。

分享用sqlserver触发器实现某张表插入数据同时写到另外一张表案例

概述

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。

某张表插入数据需要同时写到另外一张表,下面介绍下如何用sqlserver触发器来实现。

1、创建表结构

这里跟Oracle数据库的create table xx as select XX不一样

select into LJPL_XX_LJYHXX_MID from LJPL_XX_LJYHXX WHERE 1=2;select into LJPL_XX_LJJHXX_MID from LJPL_XX_LJJHXX WHERE 1=2;select into LJPL_XX_RQFH_MID from LJPL_XX_RQFH WHERE 1=2;

2、创建触发器

这里要注意我分别用了AFTER和instead of两个用法。

且sqlserver的INSERTED代表插入后的数据,这个要比Oracle实用很多,因为Oracle触发器不能直接写全部字段,只能一个一个字段:new.字段名这种方式,麻烦很多。

--判断触发器是否存在if exists(select from sysobjects where name='trg_ljjhxx')drop trigger trg_ljjhxx;goCREATE TRIGGER dbo.trg_ljjhxx ON dbo.LJPL_XX_LJJHXX AFTER INSERT AS BEGIN INSERT INTO LJPL_XX_LJJHXX_MID SELECT FROM INSERTED END go​--判断触发器是否存在IF EXISTS ( SELECT FROM sysobjects WHERE NAME = 'trg_rqfh' ) DROP TRIGGER trg_rqfh;go CREATE TRIGGER dbo.trg_rqfh ON dbo.LJPL_XX_RQFH instead of INSERT AS BEGIN INSERT INTO LJPL_XX_RQFH_MID SELECT FROM INSERTED END go​--判断触发器是否存在IF EXISTS ( SELECT FROM sysobjects WHERE NAME = 'trg_ljyhxx' ) DROP TRIGGER trg_ljyhxx;go CREATE TRIGGER dbo.trg_ljyhxx ON dbo.LJPL_XX_LJYHXX instead of INSERT AS BEGIN INSERT INTO LJPL_XX_LJYHXX_MID SELECT FROM INSERTED END go

3、测试

测试成功

INSERT INTO LJPL_XX_RQFH ( [FID], ....)VALUES ( N'00061017-16EE-4CED-806A-3EF8F3D47466', N'M810550000', N'黄伟波',... );​SELECT FROM LJPL_XX_RQFH WHERE FID=N'00061017-16EE-4CED-806A-3EF8F3D47466'

相关文章