SSMS / SQLCMD批处理在子文件夹中创建所有存储过程
SSMS / SQLCMD batch to create all stored procedures within a sub-folder
我使用一些 SQLCMD 开发了以下 T-SQL 脚本来为他们的创建调用单独的存储过程脚本。存储过程位于子 Store Procedure\
文件夹中(我想保留 space)。
它们可能是执行它的更好方法,但我想要一个创建数据库、tables、存储过程等的独特脚本(但使用文件)。
我既没有详细介绍数据库,也没有详细介绍 table 脚本。
/* Create database (I still have some issues with dropping it (existing connections) */
*/ Create tables with constraints... */
-- Is it possible to declare a relative path (here MY_PARENT_PATH is replaced by "c:\...")
:setvar STORE_PROCEUDRE_PATH "[MY_PARENT_PATH]\Stored Procedures"
-- Calls CRUD stored procedures from separate scripts via SQLCMD - is it possible to batch it with all spXXX_XXXX.sql files included in the sub-folder?
:r $(STORE_PROCEUDRE_PATH)\spFields_Create.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Read.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Update.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Delete.sql
-- Idem for other table, such as Features, Values, etc.
是否可以循环 Store Procedure\
文件夹中的所有文件 spXXX_XXXX.sql 文件并执行 :r $(STORE_PROCEUDRE_PATH)\spXXX_XXXX.sql
脚本?
我看到了几篇文章,其中展示了使用 FOR
构造的示例,但我感到困惑。
感谢您的任何见解:-)
是的,有办法,
SQLCMD 无法遍历文件,但您可以使用 Windows 批处理脚本来完成。
这里有一篇关于如何操作的好博客:
SQLCMD and Batch File magic
所以基本上你需要制作一个 .bat 文件,例如:CRUDE.bat 并编辑并粘贴下面的代码并保存,
@@echo off
cd "[MY_PARENT_PATH]\Stored Procedures"
FOR %%A IN (*.SQL) DO ( sqlcmd -S [SERVERNAME] -d [DATABASE] -U [][username -P password] -i "%%A")
您需要用您的值替换这些值:
MY_PARENT_PATH : 您的子订单所在的路径或目录。
SERVERNAME:您的数据库服务器名称。
DATABASE1:您的数据库名称。
用户名:您的 SQL 用户名。
密码:您的SQL密码。
现在您可以 运行 批处理文件了,它很神奇。
另外 here 您可以了解更多关于 SQLCMD 实用程序
我使用一些 SQLCMD 开发了以下 T-SQL 脚本来为他们的创建调用单独的存储过程脚本。存储过程位于子 Store Procedure\
文件夹中(我想保留 space)。
它们可能是执行它的更好方法,但我想要一个创建数据库、tables、存储过程等的独特脚本(但使用文件)。
我既没有详细介绍数据库,也没有详细介绍 table 脚本。
/* Create database (I still have some issues with dropping it (existing connections) */
*/ Create tables with constraints... */
-- Is it possible to declare a relative path (here MY_PARENT_PATH is replaced by "c:\...")
:setvar STORE_PROCEUDRE_PATH "[MY_PARENT_PATH]\Stored Procedures"
-- Calls CRUD stored procedures from separate scripts via SQLCMD - is it possible to batch it with all spXXX_XXXX.sql files included in the sub-folder?
:r $(STORE_PROCEUDRE_PATH)\spFields_Create.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Read.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Update.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Delete.sql
-- Idem for other table, such as Features, Values, etc.
是否可以循环 Store Procedure\
文件夹中的所有文件 spXXX_XXXX.sql 文件并执行 :r $(STORE_PROCEUDRE_PATH)\spXXX_XXXX.sql
脚本?
我看到了几篇文章,其中展示了使用 FOR
构造的示例,但我感到困惑。
感谢您的任何见解:-)
是的,有办法, SQLCMD 无法遍历文件,但您可以使用 Windows 批处理脚本来完成。
这里有一篇关于如何操作的好博客: SQLCMD and Batch File magic
所以基本上你需要制作一个 .bat 文件,例如:CRUDE.bat 并编辑并粘贴下面的代码并保存,
@@echo off
cd "[MY_PARENT_PATH]\Stored Procedures"
FOR %%A IN (*.SQL) DO ( sqlcmd -S [SERVERNAME] -d [DATABASE] -U [][username -P password] -i "%%A")
您需要用您的值替换这些值:
MY_PARENT_PATH : 您的子订单所在的路径或目录。
SERVERNAME:您的数据库服务器名称。
DATABASE1:您的数据库名称。
用户名:您的 SQL 用户名。
密码:您的SQL密码。
现在您可以 运行 批处理文件了,它很神奇。
另外 here 您可以了解更多关于 SQLCMD 实用程序