9

T-SQL スクリプトでシステム環境変数の値を読み取るにはどうすればよいですか?

これは、SQL Server 2005 で実行されます。

4

6 に答える 6

5

「T-SQLスクリプトでシステム環境変数の値を読み取る」には、「sqlcmdモード」を使用するようにSQLManagementStudioを設定できます。

次に、次のように使用できます。

Print '$(TEMP)'

:r $(Temp)\Member.sql
go

これが「SQLManagementStudio」の外部でどのように行われるかはわかりませんが、見つけるのは難しいはずです。

于 2009-10-27T17:43:27.707 に答える
3

ねえ、サーバー名を取得したい場合は、SELECT @@SERVERNAME

于 2009-09-10T14:57:05.320 に答える
3

これにより、リストが表示されます (ユーザーが xp_cmdshell を実行できる場合)。

exec master..xp_cmdshell 'set'

注: xp_cmdshell はセキュリティ上の危険性があります ...

これは、マネージド ストアド プロシージャ、拡張ストアド プロシージャ、または com コンポーネントを介して行うこともできます。

于 2009-05-13T04:37:11.987 に答える
2

一般に、xp_cmdshell はセキュリティ上の理由から避けるのが最善です。

CLR アセンブリを使用することをお勧めします。ここでは、CLR アセンブリを作成するための優れた紹介を示します。

C# で System.Environment.GetEnvironmentVariable() を使用できます。詳細については、こちらを参照してください

于 2009-05-13T05:04:56.700 に答える
2

答えてくれてありがとう。これはおそらく最も高度な方法ではありませんが、彼らは私が実用的な解決策にたどり着くのを助けました:

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システム コマンドに置き換えることができました。しかし、これはどの環境変数でも機能するようになりました。

于 2009-05-13T05:13:10.400 に答える