Tsql SQLCMD模式:环境变量语法

Tsql SQLCMD模式:环境变量语法,tsql,environment-variables,ssms,sqlcmd,Tsql,Environment Variables,Ssms,Sqlcmd,我假设在T-SQL运行时设置SSMS输出文件路径的最佳方法是使用SQLCMD模式。 如何在代码中使用环境变量(例如%systemroot%)?下列炸弹: :set mypath %systemroot% :out $(mypath)"\the_result.txt" select * from myTab 还有可能:是否有一个环境变量用于带有此代码的Query.sql文件夹,或用于工作文件夹? 谢谢 如何使用T-SQL读取SQL Server中的环境变量 要在T-SQL中读取环境变量,可以使

我假设在T-SQL运行时设置SSMS输出文件路径的最佳方法是使用SQLCMD模式。 如何在代码中使用环境变量(例如%systemroot%)?下列炸弹:

:set mypath %systemroot%
:out $(mypath)"\the_result.txt"
select * from myTab 
还有可能:是否有一个环境变量用于带有此代码的Query.sql文件夹,或用于工作文件夹?
谢谢

如何使用T-SQL读取SQL Server中的环境变量

要在T-SQL中读取环境变量,可以使用SQL Server中的
xp\u cmdshell
扩展存储过程

以下示例显示如何读取%windir%环境变量,该变量使用xp\u cmdshell提供SQL Server上的Windows目录路径:

DECLARE @windir nvarchar(255)
CREATE TABLE #Tmp
(
EnvVar nvarchar(255)
)
INSERT INTO #Tmp exec xp_cmdshell 'echo %windir%'
SET @windir = (SELECT TOP 1 EnvVar from #Tmp)

SELECT @windir as 'Windows Directory'
注意:要运行此命令,您需要是sysadmin固定服务器的成员。如果希望其他人能够执行此命令,则必须显式授予他们执行xp_cmdshell存储过程的权限

有关此存储过程的详细信息,请访问。

在sqlcmd中使用命令提示符环境变量 在下面的示例中,设置了四个环境变量,然后从sqlcmd调用

C:\>SET tablename=Person.Person
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks2012
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO

谢谢,非常感谢!