【发布时间】:2019-02-17 13:28:56
【问题描述】:
我只在本地运行 SQL Server。 我正在使用 VS 2017 社区构建一个项目。 我创建了一个 CLR 程序,并将其作为程序集成功上传。 类和方法是公开的。 我创建了一个 SQL 标准 proc 以使用 permissions_set = external_access 调用 clr proc。 值得信赖已开启。 更改授权设置为 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();
}
};
【问题讨论】:
标签: sql-server multithreading security permissions sqlclr