Используя SMS Retriever API, вы можете избежать разрешения READ_SMS. Пожалуйста, обратитесь https://android.jlelse.eu/googles-sms-retriever-api-6540eb3c8e9c
Это должно дать вам список (при условии, что вы разрешаете людям выполнять xp_cmdshell)
exec master..xp_cmdshell 'set'
Примечание: xp_cmdshell представляет собой угрозу безопасности ...
Вы также можете сделать это с помощью управляемой хранимой процедуры, расширенной хранимой процедуры или через компонент com.
xp_cmdshell обычно лучше избегать из соображений безопасности.
Лучше использовать сборку CLR. Вот хорошее введение в создание сборки CLR .
Вы можете использовать System.Environment.GetEnvironmentVariable () в C # - вы найдете больше информации о том, как это сделать здесь .
Спасибо за ответы. Они помогли мне найти рабочее решение, хотя это, вероятно, не самый продвинутый метод:
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 , Но теперь это работает для любой переменной окружения.
Эй, если вы хотите получить имя сервера, просто позвоните SELECT @@ SERVERNAME
Чтобы «прочитать значение системной переменной среды в сценарии T-SQL», вы можете настроить SQL Management Studio на использование «sqlcmd Mode».
Тогда вы можете использовать это так:
Print '$(TEMP)'
:r $(Temp)\Member.sql
go
Я не уверен, как это делается вне «SQL Management Studio», но это будет сложно выяснить.