10 Stimmen

Verwendung von Umgebungsvariablen in T-SQL

Wie kann ich den Wert einer Systemumgebungsvariablen in einem T-SQL-Skript lesen?

Dies soll auf SQL Server 2005 laufen.

5voto

user197525 Punkte 51

Um "den Wert einer Systemumgebungsvariablen in einem T-SQL-Skript zu lesen", können Sie SQL Management Studio so einstellen, dass es den "sqlcmd-Modus" verwendet.

Dann können Sie wie folgt vorgehen:

Print '$(TEMP)'

:r $(Temp)\Member.sql
go

Ich bin mir nicht sicher, wie das außerhalb von "SQL Management Studio" gemacht wird, aber es sollte schwer sein, das herauszufinden.

3voto

Sam Saffron Punkte 124121

Damit sollten Sie eine Liste erhalten (vorausgesetzt, Sie erlauben den Benutzern die Ausführung von xp_cmdshell)

exec master..xp_cmdshell 'set'

Hinweis: xp_cmdshell stellt ein Sicherheitsrisiko dar ...

Sie könnten dies auch mit einer verwalteten gespeicherten Prozedur, einer erweiterten gespeicherten Prozedur oder über eine Com-Komponente tun.

3voto

Aaron Alton Punkte 22030

Xp_cmdshell sollte aus Sicherheitsgründen generell vermieden werden.

Sie sind besser dran, wenn Sie eine CLR-Assembly verwenden. Hier ist eine gute Einführung in Erstellen einer CLR-Assembly .

Sie können System.Environment.GetEnvironmentVariable() in C# verwenden - hier finden Sie weitere Informationen darüber, wie das geht aquí .

3voto

Rodrigo Punkte 4298

Hey, wenn Sie den Servernamen abfragen wollen, rufen Sie einfach SELECT @@SERVERNAME

2voto

benPearce Punkte 36232

Vielen Dank für die Antworten. Sie haben mir geholfen, eine funktionierende Lösung zu finden, obwohl dies wahrscheinlich nicht die fortschrittlichste Methode ist:

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

Konkret habe ich versucht, den Hostnamen zu erhalten, das Echo %computername% könnte durch das Hostname Systembefehl. Aber das funktioniert jetzt für jede Umgebungsvariable.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X