如何更改Visual Studio自动生成的数据库创建SQL脚本

时间:2019-07-16 13:13:37

标签: sql-server visual-studio

我将Visual Studio Enterprise 2015用于我的数据库项目,并使用它来生成Database_Create.sql脚本,该脚本将在不同的服务器上部署和运行。

有一些VisualStudio生成的代码需要手动编辑,这些代码为数据库名,默认数据和默认日志目录设置了SQLCMD命令变量。

我可以使用SERVERPROPERYT('InstanceDefaultDataPath')在TSQL中以编程方式获取默认数据和默认日志目录,但是不能将其与SQLCMD命令混合使用。

我有一个手动添加到Database_Create.sql脚本中的解决方案,但希望将其烘焙到VS项目中并避免手动编辑。

我可以更改VisualStudio的代码生成过程,以便生成的Database_Create.sql脚本包含我的代码吗?

具体来说,自动生成的代码是:

Visual Studio generated a change script with the following lines:

GO
SET ANSI_NULLS, ANSI_PADDING --etc.;
SET NUMERIC_ROUNDABORT OFF;

GO
:setvar DatabaseName "Foo"
:setvar DefaultFilePrefix "Foo"
:setvar DefaultDataPath ""
:setvar DefaultLogPath ""

GO
:on error exit
GO

:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
    BEGIN
        PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
        SET NOEXEC ON;
    END

GO
USE [master];

GO
PRINT N'Creating $(DatabaseName)...'
GO
CREATE DATABASE [$(DatabaseName)] COLLATE Latin1_General_CI_AS
GO
PRINT N'Creating [MediaFileGroup]...';

GO

ALTER DATABASE [$(DatabaseName)]
    ADD FILEGROUP [MediaFileGroup] CONTAINS FILESTREAM;

GO

ALTER DATABASE [$(DatabaseName)]
    ADD FILE (NAME = [MediaFileGroup_12345678], FILENAME = N'$(DefaultDataPath)$(DefaultFilePrefix)_MediaFileGroup_12345678.mdf') TO FILEGROUP [MediaFileGroup];

GO
USE [$DataBaseName)];

我想添加一段SQL代码来代替

ALTER DATABASE [$(DatabaseName)]
    ADD FILE (NAME = [MediaFileGroup_12345678], FILENAME = N'$(DefaultDataPath)$(DefaultFilePrefix)_MediaFileGroup_12345678.mdf') TO FILEGROUP [MediaFileGroup];

(因为这是使用DefaultDataPath的行),所以使用了我计算出的DefaultDataPath

我的问题不是关于以编程方式获取默认数据路径-我可以做到这一点。我的问题是:如何更改VisualStudio生成的代码部分?

0 个答案:

没有答案