Я использую SQL Server только локально.
Я строю проект с сообществом VS 2017.
Я создал процедуру CLR и успешно загрузил ее как сборку.
Класс и метод общедоступны.
Я создал стандартную процедуру SQL для вызова процедуры clr с permissions_set = external_access.
Надежность включена.
Изменение разрешения установлено на sa.
Все, что он делает, это исполняет файл bat:
cmd.exe c: \ temp \ test.bat
Но я все еще получаю ошибку 6522 Исключение безопасности.
Когда я запускаю метод как консольное приложение, он отлично работает. Но в SQL Server
не ходи.
Буду очень признателен за любой совет - это моя первая попытка с CLR.
Code:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;
using System.Diagnostics;
using System.Text;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void RunTestBat()
{
ProcessStartInfo pPStartInfo = new ProcessStartInfo("cmd.exe");
pPStartInfo.WorkingDirectory = @"C:\Temp";
pPStartInfo.UseShellExecute = true;
pPStartInfo.Arguments = string.Format(@" /C test.bat");
Process p = new Process();
p.StartInfo = pPStartInfo;
p.Start();
p.WaitForExit();
}
};