我假设在T-SQL运行期间设置SSMS输出文件路径的最佳方法是使用SQLCMD模式。 如何在代码中使用环境变量(例如%systemroot%)?以下炸弹:
:set mypath %systemroot%
:out $(mypath)"\the_result.txt"
select * from myTab
也许:使用此代码或工作文件夹的Query.sql文件夹是否有环境变量? 谢谢!
答案 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存储过程的权限。
在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