T-SQL スクリプトでシステム環境変数の値を読み取るにはどうすればよいですか?
これは、SQL Server 2005 で実行されます。
T-SQL スクリプトでシステム環境変数の値を読み取るにはどうすればよいですか?
これは、SQL Server 2005 で実行されます。
「T-SQLスクリプトでシステム環境変数の値を読み取る」には、「sqlcmdモード」を使用するようにSQLManagementStudioを設定できます。
次に、次のように使用できます。
Print '$(TEMP)'
:r $(Temp)\Member.sql
go
これが「SQLManagementStudio」の外部でどのように行われるかはわかりませんが、見つけるのは難しいはずです。
ねえ、サーバー名を取得したい場合は、SELECT @@SERVERNAME
これにより、リストが表示されます (ユーザーが xp_cmdshell を実行できる場合)。
exec master..xp_cmdshell 'set'
注: xp_cmdshell はセキュリティ上の危険性があります ...
これは、マネージド ストアド プロシージャ、拡張ストアド プロシージャ、または com コンポーネントを介して行うこともできます。
一般に、xp_cmdshell はセキュリティ上の理由から避けるのが最善です。
CLR アセンブリを使用することをお勧めします。ここでは、CLR アセンブリを作成するための優れた紹介を示します。
C# で System.Environment.GetEnvironmentVariable() を使用できます。詳細については、こちらを参照してください。
答えてくれてありがとう。これはおそらく最も高度な方法ではありませんが、彼らは私が実用的な解決策にたどり着くのを助けました:
declare @val varchar(50)
create table #tbl (h varchar(50))
insert into #tbl exec master..xp_cmdshell 'echo %computername%'
set @val = (select top 1 h from #tbl)
drop table #tbl
具体的には、ホスト名を取得しようとしていましたが、echo %computername% をhostnameシステム コマンドに置き換えることができました。しかし、これはどの環境変数でも機能するようになりました。