T SQL中的相对路径?

时间:2020-03-06 14:46:54  来源:igfitidea点击:

如何在t sql中获得相对路径?例如,.sql文件位于文件夹D:\ temp中,我想获取文件D:\ temp \ App_Data中hello.txt文件的路径。如何使用相对路径参考?

假设我正在SQL Server Management Studio中执行sql文件。

解决方案

.sql文件只是....一个文件。它对自己的位置没有任何感觉。是执行它(我们未指定)的东西,它会感觉到它的位置,即文件的位置。

我注意到我们提到了一个App_Data文件夹,所以我猜想涉及ASP.NET。如果要在Web应用程序中使用相对路径,请参见MapPath

http://msdn.microsoft.com/zh-CN/library/system.web.httpserverutility.mappath.aspx

当T-SQL执行时,它在服务器上而不是在运行Management Studio的客户端计算机(或者任何其他SQL客户端)上批量运行。客户端只是将.sql文件的文本内容发送到服务器以执行。因此,除非该文件位于数据库服务器上,否则我非常怀疑我们是否能够通过SQL脚本与该文件进行交互。

服务器正在执行t-sql。它不知道客户端从何处加载文件。我们必须将路径嵌入脚本中。

DECLARE @RelDir varchar(1000)
SET @RelDir = 'D:\temp\'
...

也许我们可以以编程方式将路径放入.sql脚本文件中的SET命令中,或者我们可以使用sqlcmd并将相对目录作为变量传递。