我将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生成的代码部分?