Проверяли ли вы Диспетчер задач, Обозреватель процессов или любой другой способ просмотра локальных процессов, чтобы определить, действительно ли программа запущена? Могу поспорить, что сделал. Проблема заключается в том, что SQL Server является совершенно отдельным фоновым процессом от вашего (Windows) пользовательского сеанса и не имеет доступа к вашему рабочему столу (даже если SQL Server работает на том же компьютере, на котором вы вошли, и довольно часто он фактически выполняетсяна другом компьютере, на который вы просто отправляете запросы, как удаленные веб-сайты). Единственный способ увидеть приложение или окно с графическим интерфейсом - это использовать SQL Server Express LocalDB, поскольку это процесс пользовательского режима, который выполняется в сеансе как фоновый процесс и имеет доступ к вашему рабочему столу. Итак, блокнот должен быть запущен, вы просто его не видите. И если вы продолжите выполнять эту хранимую процедуру, вы, скорее всего, будете порождать новый отдельный блокнот каждый раз. Возможно, вы захотите убить их; -).
Если вы хотите проверить, действительно ли SQL Server может порождать процесс / приложение на базе ОС, просто создайте простой .cmd
скрипт на C:\temp
, которыйвыполняет следующие действия:
ECHO %TIME% >> C:\TEMP\_SQLCLR_test.txt
Затем измените первую строку StartInfo
на:
myProcess.StartInfo.FileName = @"C:\TEMP\_SQLCLR_test.cmd";
и, возможно, также:
myProcess.StartInfo.CreateNoWindow = true;
. общая концепция, не требующая взаимодействия с пользовательским интерфейсом (при условии, что учетная запись входа, на которой запущен процесс SQL Server, имеет разрешения на доступ и запись / изменение в каталог C: \ TEMP ).
!! ВАЖНОЕ ПРИМЕЧАНИЕ !!
Process
- это одноразовый объект, поэтому его необходимо создать в конструкции using()
, либо вам необходимо реализовать try
/ finally
управлять этим звонком Dispose()
независимо от того, что происходит. В вашей текущей настройке, если есть исключение, у вас будет потерянный внешний ресурс, который будет хранить память / файловую систему / etc до тех пор, пока не будет собран мусор, и не уверен, когда это произойдет, поскольку я не верю, что вызовы SQL Serverэто очень часто.