gpt4 book ai didi

c# - 为 SQL Server Linux 版本安装 CLR

转载 作者:行者123 更新时间:2023-12-03 10:01:28 24 4
gpt4 key购买 nike

我有一个 C# 文件,可以在 Windows 上完美地编译和安装。我可以使用以下命令在 Linux 上使用 mcs 编译它而不会出错:

mcs -reference:System.Data.dll -target:library -out:tests/RegEx.dll tests/regex.cs

我已验证该文件存在并且在与源相同的目录中具有 775 权限。接下来,我尝试使用以下命令将它安装在服务器上:

/opt/mssql-tools/bin/sqlcmd -P Password12! -S localhost -U SA -Q "CREATE ASSEMBLY Regex from '$TRAVIS_BUILD_DIR/tests/RegEx.dll' WITH PERMISSION_SET = SAFE"

但是,我收到错误:

CREATE ASSEMBLY failed because it could not open the physical file '/home/travis/build/Beakerboy/sqlsrv/tests/RegEx.dll': 2(The system cannot find the file specified.).

我担心路径可能需要是“Windows 格式”,并发现甚至可能需要“C:\”的建议。接下来我尝试了这个,但仍然找不到文件:

/opt/mssql-tools/bin/sqlcmd -P Password12! -S localhost -U SA -Q "CREATE ASSEMBLY Regex from 'c:\home\travis\build\Beakerboy\sqlsrv\tests\RegEx.dll' WITH PERMISSION_SET = SAFE"

有人对如何格式化它有建议吗?我的服务器安装的完整 travis 脚本在 GitHub

最佳答案

根据我的内存,除非在过去一年中发生了某些变化,否则我相信您只能使用十六进制字节/VARBINARY 选项创建程序集,而不能从文件中创建程序集系统。到目前为止,我找不到相关的文档,但我确实记得在 SQL Server for Linux 发布时读过它(限制是没有从文件系统加载,只有 SAFE 程序集等)。(O.P. 能够从 DLL 中加载它,所以要么发生了变化,要么我记错了)。

如果在 Windows 上编译,我创建了一个命令行实用程序来将 DLL 转换为正确的格式:BinaryFormatter .我一直想更新这个项目,让它在 Linux 上本地运行,但还没有解决这个问题(如果有人有时间,可能需要一些帮助😸)。

无论如何,如果您需要 RegEx 函数(以及更多),您可以通过下载并安装 SQL# 来更轻松地实现。我创建的库确实适用于 Linux 上的 SQL Server。它具有 .NET 中可用的大部分(如果不是全部的话)RegEx 方法,以及一些额外的方法。而且,它可以正确处理安全性,因为所有程序集都已签名,因此不需要启用 TRUSTWORTHY ( a bad practice ) 或禁用 'clr strict security'

关于c# - 为 SQL Server Linux 版本安装 CLR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com