七达网是国内最新、最齐、最安全的软件下载基地!

关于我们最近更新热门排行

首页 软件 游戏 应用 文章 专题

新闻资讯软件应用软件教程编程开发 操作系统游戏攻略安卓应用安卓游戏
当前位置:首页 ›› 编程开发 ›› Visual Studio进行SQL Server源代码管理和部署方法

Visual Studio进行SQL Server源代码管理和部署方法

2014-12-12 16:51   作者:佚名   来源:本站整理   浏览:953   评论:1  

修改部署脚本

有些时候,你需要对发布脚本进行一些手动修改。这种情况通常发生在对某个表的操作会产生数据丢失的情况下。例如将某个字段设为不允许空值,或者是修改字段数据类型。

在Visual Studio中是不能够直接修改部署脚本的,你需要将脚本拷贝到SQL Server Management Studio中。请确保你在“查询”菜单中打开了SQLCMD模式,因为它需要进行某些设置,例如数据库名称等等。

还有一种情况下你可能需要修改部署脚本,就是将脚本分解为多个小的片段。比方说,除了某些常见的修改之外,你可能还需要为某张数据量很大的表添加一些索引。由于创建这些索引的过程时间可能会很长,你或者会决定将创建索引的改动在几个小时之后再进行,而在那之前仍然要运行脚本的其它部分。

重构日志

SQL Server Data Tools内部维护着一份重构日志,它也减少了你手动编辑部署脚本的需要。不幸的是这一特性很容易在无意之中被忽略。如果你在设计器窗口中修改了某个字段的名称,这次改动就会记录在日志中。但如果你直接对包含这张表定义的原始SQL进行编辑,那么日志中就不会存在这次修改的记录。

你或许不会立即发现这一问题,但当你开发部署数据库时,这段脚本会尝试删除某个字段,随后再添加一个新字段,而不是你所期望的对字段直接重命名。一旦发生这种情况,你必须选择要么立即回滚你的改动,并按照“正确的方法”再做一遍,意味着你需要使用表设计器进行操作。或者你也可以选择对部署脚本进行手动修改。

创建视图、自定义函数和存储过程

如果你的应用程序是基于ORM开发的,那么基本上可以忽略这一节内容。

基础

与表的创建一样,对于你将视图、自定义函数和存储过程放在哪里并没有强制的规定。如果你选择使用Schema/对象类型这一文件结构,那么默认的设置是为这三种对象各自创建一个独立的文件夹。还有一种选择是参考SQL Server Management Studio的模式,将它们各自分解到细粒度的文件夹中。

有两种方式可以将新对象加入项目中,你可以选择基于模板创建,在其中填入各种内容,例如参数列表或是视图内容。或者你也可以选择在SQL Server Management Studio中创建好该对象,如果在我不确定该对象的具体内容,并且预计会持续进行修改时,通常我会选择这种方式。一旦我确信了其中的内容,我就会将其保存为一个SQL文件,随后导入到我的项目中。

添加安全设置

假设这个数据库已经进行了合适的安全防护,接下来你就需要将各种对象对用户进行授权了。虽然有多种方式可以完成这一任务,但我还是建议将GRANT语句放在与定义视图、自定义函数和存储过程相同的文件中。这样一来,你一眼就能看到可以执行这段过程的用户是否都赋予了权限。

部署之前与之后的脚本

SQL Server Data Tools允许你创建一个单独的部署前脚本,以及一个单独的部署后脚本。这些脚本并非一次性的迁移脚本,而是在每次部署时都会运行的内容。

这两个脚本的命名分别为Script.PreDeployment.sql和Script.PostDeployment.sql。它们并非真正的SQL脚本,而是一种称为SQL CMD的变体。通过SQL CMD可以对其它SQL脚本进行引用。

认识到以上这点很重要,因为你的部署前与部署后脚本很容易变得混乱,为了避免混乱的产生,我建议你将这类脚本作为目录一样处理,将每一类的操作分别存储在不同的脚本文件中。以下是一个典型的部署前脚本的示例:

PRINT N'Enabling CLR';

EXEC sp_configure 'clr enabled' , '1';

RECONFIGURE;

:r ".\OneTimeScripts\Migrate records to not use customer type 6.sql"

下面是相对应的部署后脚本:

:r .\Data\UserType.sql

:r .\Data\CustomerType.sql

:r .\Data\AccountLevel.sql

时机

部署前脚本的执行时机处于数据库创建之后,而在其它对象加入数据库之前。它允许你修改服务器与数据库级别的设置,而这些设置并没有直接通过SSDT暴露出来。

部署后脚本执行的时机总在最后,正如其名称所暗示的一样,它是在其它所有数据库对象都更新后才运行的。

Tags:责任编辑:kang1127
    1. Microsoft SQL ServerMicrosoft SQL Server

      本合集包含了Microsoft SQL Server2000-2019的所有版本,都是正版软件的32/64位,Microsoft SQL Server是Microsoft 公司推出的关系型数据库管理系统。

    软件评论

    请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

        登录   注册