Wie kann ich den Wert einer Systemumgebungsvariablen in einem T-SQL-Skript lesen?
Dies soll auf SQL Server 2005 laufen.
Wie kann ich den Wert einer Systemumgebungsvariablen in einem T-SQL-Skript lesen?
Dies soll auf SQL Server 2005 laufen.
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.
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.
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í .
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 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.