标签: sql-clr

如何授予用户 UNSAFE ASSEMBLY 权限

我们如何分配用户,例如:数据库所有者(DBO)UNSAFE ASSEMBLY 权限?

我要求它使用户能够创建程序集但不知道 SA 密码,因此无能为力EXEC sp_changedbowner ‘sa’

任何的想法?

谢谢你。

sql-server permissions sql-server-2008-r2 sql-clr

7
推荐指数
1
解决办法
3万
查看次数

迁移 CLR 程序集

我正在将 SQL Server 2008R2 数据库迁移到新服务器。(也是 2008R2)

服务器上有许多 CLR 程序集。这些会自动随数据库迁移还是我必须手动编写脚本?

谢谢!

sql-server migration sql-clr

7
推荐指数
2
解决办法
6427
查看次数

在 T-SQL 中遇到“THROW”后,CLR 能否继续执行?

我正在从 CLR 存储过程调用 T-SQL 存储过程。并且THROWT-SQL 中的语句在不进入catch块的情况下停止 CLR 的执行。是否可以在我的代码中更改某些内容以导致 CLR 过程执行该catch块?

T-SQL:

CREATE TABLE t1 (ID INT PRIMARY KEY clustered);
CREATE TABLE t2 (ID INT CONSTRAINT fk_1 FOREIGN KEY REFERENCES t1(ID))
GO

CREATE PROC dbo.TestThrow 
AS
BEGIN
BEGIN TRY
    INSERT INTO t2 VALUES (1)
END TRY
BEGIN CATCH
    THROW 
END CATCH
END
GO
Run Code Online (Sandbox Code Playgroud)

克莱尔:

    public static void TestThrow()
    {
        String query = "EXEC DBO.TESTTHROW";
        using (SqlConnection connection = new SqlConnection("context connection=true"))
        {
            connection.Open();
            try
            { …
Run Code Online (Sandbox Code Playgroud)

sql-server c# sql-clr

7
推荐指数
1
解决办法
2152
查看次数

触发器 - 在动态 SQL 中使用插入/删除的表

在触发器中,我试图创建一个唯一的表名(使用NEWID()),我可以存储在插入和删除的表中找到的数据。

Declare @NewID varchar(50) = Replace(convert(Varchar(50),NEWID()),'-','')
Declare @SQLStr varchar(8000)
Set @SQLStr= 'Select * into [TMPIns' + @newID + '] from inserted'
Exec (@SQLStr)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:无效的对象名称“插入”

我知道我可以做到:

Select * into #inserted from inserted
Set @SQLStr= 'Select * into [TMPIns' + @newID + '] from #inserted'
Exec (@SQLStr)
Run Code Online (Sandbox Code Playgroud)

但是我不想使用 TempDB,因为这些表会变得很大,而且我也觉得它是多余的。有没有办法避免创建#inserted?

trigger sql-server dynamic-sql sql-clr

7
推荐指数
1
解决办法
5760
查看次数

如何从性能的角度更好地使用 CLR 函数(在每个 DB 内部重复或具有通用功能)?

我问了一个关于XML使用XSD schemainside验证的问题SQL Server 2012(见链接)。我明白(正如我怀疑的那样)我需要使用CLR Function. 该函数将获取XSD schema textXML text进行验证。

我将有 1 个配置数据库和许多安装数据库。从那个角度来看,我想知道在哪里创建该功能 - 在配置数据库中还是在每个安装数据库中?

从支持的角度来看,最好只有一个 CLR 功能。

xml t-sql sql-server-2012 functions sql-clr

7
推荐指数
1
解决办法
1393
查看次数

SQL、SQLCLR 对象和有效内存利用率

我们最近将我们的 ERP 系统从 IBM Universe 转换为 SQL Server。应用程序性能通常是可以接受的,但偶尔会降级到可怕的程度。

我们在具有 32 Gb RAM 的 VMWare 上的 Win Server 2012 和 SQL Server 2012 上运行数据库。SQL 最大内存设置为 27Gb。db 服务器仅托管此数据库,不执行任何其他功能。总数据库大小约为 110Gb。该应用程序有它自己的专用服务器。

供应商广泛使用 CLR 来移植代码(超过 36,000 个标量函数)。我了解单个 CLR 在应用程序 OLTP 上下文中运行正常,但由于逐行而不是基于设置的操作而尝试执行批量作业时,不能很好地扩展。很好……很酷……继续前进。

我运行了Brent Ozar 的脚本,该脚本高可用内存确定为需要查看的内容,以及每个查询的大量执行计划。供应商建议向服务器添加更多 RAM,但这让我很恼火,因为应用程序似乎没有使用现在的内存。

我感兴趣的是 SQL 的整体性能和行为。我看到一系列症状表明某些事情不正确,但我无法确定。这就像服务器拒绝运行。它决心

粗略地说,在我看来,大约 10Gb 的内存被数据库用于缓存,大约 11GB 是免费的,大约 3.5Gb 用于计划缓存,其余的我无法解释。我对一些定义有点不确定,例如免费、保留、被盗等。它们是否重复计算?

活动监视器显示:

在此处输入图片说明

当我运行此查询时:

-- what's happening inside my buffer pool?
SELECT counter_name, instance_name, mb = cntr_value/1024.0
  FROM sys.dm_os_performance_counters 
  WHERE (counter_name = …
Run Code Online (Sandbox Code Playgroud)

performance sql-server memory sql-server-2012 sql-clr performance-tuning

7
推荐指数
1
解决办法
5782
查看次数

哪个 CLR 存储过程导致内存压力导致 sqlservr.exe 意外终止?

每隔几天我的 SQL Server 实例就会意外终止并重新启动。在日志中,请参阅:

.NET Framework 公共语言运行时发生致命错误。SQL Server 正在关闭。(事件 ID 6536)。

在终止之前,我看到几条消息说:

由于内存压力,AppDomain XXX 被标记为卸载。

我有 60 个 CLR 存储过程,它们是从我的前任那里继承而来的。所有这些都应该是使用少量数据的短存储过程。如何找到导致内存压力的 CLR 存储过程?

我在跑:

Microsoft SQL Server 2016 (SP1-CU4) (KB4024305) - 13.0.4446.0 (X64) 2017 年 7 月 16 日 18:08:49   
Windows Server 2016 Standard 6.3(内部版本 14393:)(管理程序)上的标准版(64 位) 

sql-server sql-clr

7
推荐指数
1
解决办法
1824
查看次数

轻量级池会禁用内置 CLR 工具吗?

以纤程模式(轻量级池)运行 SQL Server会禁用 SQL CLR:

轻量级池不支持公共语言运行时 (CLR) 执行。禁用以下两个选项之一:“启用 clr”或“轻量级池化”。依赖 CLR 且在光纤模式下无法正常工作的功能包括层次结构数据类型、复制和基于策略的管理。

在另一方面,禁用SQL CLR单独(无实现了轻型池)并没有禁用内置的CLR类型,如geometry,和geography(虽然hierarchyid上面提到的),如图哪有“HIERARCHYID”类型的工作时,“CLR”被禁用?

现在一些新的语言特性依赖于CLR,例如FORMAT功能

FORMAT 依赖于 .NET Framework 公共语言运行时 (CLR) 的存在。

在光纤模式下运行 SQL Server 是否禁用该FORMAT功能和/或使用 CLR 类型?

sql-server t-sql sql-clr format sql-server-2017

7
推荐指数
1
解决办法
1434
查看次数

在 SQL Azure DB 上遇到 CLR 错误

我们突然开始看到这个错误,而且在调用我们的弹性池中的数据库或任何其他数据库时,它似乎经常发生。DTU 没有被最大化,资源 dmvs 看起来也不错。

无法使用 HRESULT 0x80131022 进入公共语言运行时 (CLR)。这可能是由于低资源条件。(D b)

这是我从系统资源调控器池中得到的

Resource Pool Name           cache_memory (MB)   used_memory (MB)
internal                     104.773437          1577.125000
default                      37.609375           38.796875
SloSecSharedPool             2.914062            8.156250
InMemBackupRestorePool       26.210937           101.437500
InMemDmvCollectorPool        186.195312          203.406250
InMemMetricsDownloaderPool   2.234375            2.250000
InMemDTAPool                 0.000000            0.000000
SloHkPool                    0.000000            0.031250
InMemQueryStorePool          22.453125           35.304687
InMemWIAutoTuningPool        3.312500            4.062500
InMemXdbLoginPool            3.976562            6.250000
PVSCleanerPool               0.000000            0.000000
InMemTdeScanPool             0.000000            0.000000
SloSharedPool1               1108.890625         1234.312500
Run Code Online (Sandbox Code Playgroud)

从 sys.dm_os_performance_counters 这是过去 3 小时的样子。

cpu%    data_io%   log_write%   memory_usage%   max_worker%   sessions%
22.37   73.51      16.54        41.56           5.50          0.43
Run Code Online (Sandbox Code Playgroud)

这似乎不是 SQL Azure …

sql-server azure-sql-database sql-clr

7
推荐指数
1
解决办法
1227
查看次数

.NET SQLCLR 程序集在 SQL Server 2016 中不起作用(错误消息 10314)

我正在将数据库应用程序从 Windows 2008 R2/SQL Server 2008 R2 迁移到使用第三方 .NET CLR 程序集来解析字符串的 Windows 2012 R2/SQL Server 2016。

我得到的错误是:

尝试加载程序集 ID 65540 时 Microsoft .NET Framework 中发生错误。服务器可能资源不足,或者程序集可能不受 PERMISSION_SET = EXTERNAL_ACCESS 或 UNSAFE 的信任。再次运行查询,或检查文档以了解如何解决程序集信任问题。有关此错误的更多信息:
System.IO.FileLoadException: 无法加载文件或程序集“clrsplit,版本=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。发生与安全相关的错误。(来自 HRESULT 的异常:0x8013150A)

System.IO.FileLoadException: 在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean SuppressSecurityChecks. (AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean SuppressSecurityChecks) 在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblyMarkSecurity, StackIndPrrawlPrawl for …

sql-server sql-clr sql-server-2016

6
推荐指数
1
解决办法
2万
查看次数