SQLCMD模式:环境变量语法

时间:2014-06-20 08:42:25

标签: tsql environment-variables ssms sqlcmd

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

:set mypath %systemroot%
:out $(mypath)"\the_result.txt"
select * from myTab 

也许:使用此代码或工作文件夹的Query.sql文件夹是否有环境变量? 谢谢!

1 个答案:

答案 0 :(得分:4)

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

要在T-SQL中读取环境变量,可以在SQL Server中使用xp_cmdshell扩展存储过程。

以下示例显示如何读取%windir%环境变量,该变量使用xp_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存储过程的权限。

MSDN处查找有关此存储过程的详细信息。 Source

在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

Source