gpt4 book ai didi

sql-server - 如何在 MS SQL 中将一个 sql 文件包含在另一个 sql 文件中?

转载 作者:行者123 更新时间:2023-12-02 07:54:20 25 4
gpt4 key购买 nike

我们有几个从实体模型生成的 SQL 脚本。它们需要按特定顺序运行。此外,还有几个填充脚本可将测试数据插入数据库。

目前,我需要在 Visual Studio 中打开每个脚本,并通过单击执行(ctrl shift E)以正确的顺序执行它们。

有没有办法创建像 Master.sql 这样的脚本,其中包含如下内容:

BEGIN TRANSACTION

ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...

COMMIT

这仅需要从 Visual Studio 运行,并且不会成为应用程序本身的一部分。

如何做到这一点?

编辑 1

我发现有一个叫做 SQLCMD Scripts 的东西可以导入 SQL 文件: http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

但我的问题是如何将当前解决方案的目录路径获取到 :r 命令中。

编辑2

所以我想出了如何做到这一点,虽然不完美,但它有效。缺点是 $(SolutionDir) 不是从 Visual Studio 变量加载的,因此您需要手动设置它。此代码旨在在 Visual Studio 中运行:

-- turn on in menu: Data -> Transact SQL editor -> SQL CMD mode
-- set this to path where the .sln file is.
:setvar SolutionDir C:\_work\projectname\

:!! echo $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql
:r $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql
go

:!! echo $(SolutionDir)Maa.EntityModel.All\DblQEntityModel.edmx.sql
:r $(SolutionDir)Maa.EntityModel.All\DbQEntityModel.edmx.sql
go

最佳答案

Use sqlcmd utility .

摘录您可能感兴趣的内容:

-i input_file[,input_file2...]

标识包含一批 SQL 语句或存储过程的文件。可以指定多个文件,这些文件将按顺序读取和处理。文件名之间不要使用任何空格。 sqlcmd 将首先检查所有指定的文件是否存在。如果一个或多个文件不存在,sqlcmd 将退出。

示例:

sqlcmd -dDataBaseName -E -Stcp:ServerName\instancename -imaster.sql

Master.Sql:

:r file1.sql
:r file2.sql

关于sql-server - 如何在 MS SQL 中将一个 sql 文件包含在另一个 sql 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com