gpt4 book ai didi

sql-server - 如何在SSMS中以SQLCMD模式获取文件的相对路径?

转载 作者:行者123 更新时间:2023-12-02 06:55:14 26 4
gpt4 key购买 nike

我有下面的主脚本,它创建表,插入一些数据,然后创建存储过程。

--todo_master.sql

use master
go

:r todo_create_ddl.sql
:r todo_create_dml.sql
:r todo_create_sprocs.sql
go

但是,即使 todo_master.sql 与其他三个脚本位于同一路径中,它也无法找到这三个脚本。

我收到以下错误:

A fatal scripting error occurred.
The file specified for :r command was not found.

如果我提供如下所示的完整路径,则会按预期找到并执行这些文件。

“C:\Docs and Settings\user\My Docs\SSMS\Projects\todo_create_ddl.sql”

我可能缺少什么?

<小时/>

编辑按照 Jason 的建议,我尝试了这个,但仍然得到相同的错误:

use master
go

:setvar path "C:\Documents and Settings\user\My Documents\SQL Server Management Studio\Projects"
:setvar ddl "todo_create_ddl.sql"
:setvar dml "todo_create_dml.sql"
:setvar sprocs "todo_create_sprocs.sql"

:r $(path)$(ddl)
:r $(path)$(dml)
:r $(path)$(sprocs)
go

最佳答案

您可以通过使用 sqlcmd setvar 选项将路径分配给变量来解决此问题。然后在 :r 调用中使用该变量,如下所示:

:setvar path "c:\some path"
:r $(path)\myfile.sql

此链接有一个更深入的示例: http://www.simple-talk.com/sql/sql-tools/the-sqlcmd-workbench/

完成后,您可以删除 setvar 行并使用以下命令将其从命令行传递:

Sqlcmd /Sserver /E -ddatabase -iInputfilename -oOutputfilename -v path=c:\somepath

这可以解决脚本未从调用第一个 SQL 脚本的目录运行的问题。

关于sql-server - 如何在SSMS中以SQLCMD模式获取文件的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753541/

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