小编Spa*_*440的帖子

估计操作员成本计算

我读过的任何地方都说估计操作员成本是估计 CPU 成本和估计 I/O 成本的总和。但是,在我看到的许多运营商中,情况并非如此。下面是一个例子:

SELECT Column2
INTO   Object1
FROM   Object2
WHERE  Column3 >= Variable2
       AND Column3 <= Variable1
       AND ( Column4 = Variable5
              OR Variable5 = ? ) 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

EstimateIO="0.01" EstimateCPU="0.000246492"

总和:0.010246492

然而,SSMS 将此 0.073823 显示为估计的运营商成本。我完全不知道这是如何计算的。下面是执行计划 xml(匿名)。Node Id 0 是有问题的节点。

<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.2" Build="11.0.6537.0">
    <BatchSequence>
        <Batch>
            <Statements>
                <StmtSimple StatementText="&#x9;SELECT Column2 INTO Object1 &#xD;&#xA;&#x9;FROM Object2&#xD;&#xA;&#x9;WHERE Column3&gt;=Variable2 AND Column3&lt;=Variable1 &#xD;&#xA;&#x9;AND (Column4=Variable5 OR Variable5=?)&#xD;&#xA;&#xD;&#xA;" StatementId="1" StatementCompId="7" StatementType="SELECT INTO" RetrievedFromCache="true" StatementSubTreeCost="0.405134" StatementEstRows="246.492" StatementOptmLevel="FULL" QueryHash="0x180DF38DFFFEAFA2" QueryPlanHash="0x45A4295471B90968" StatementOptmEarlyAbortReason="GoodEnoughPlanFound">
                    <StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="false" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan

8
推荐指数
1
解决办法
5153
查看次数

创建汇编 System.DirectoryServices.AccountManagement.dll 而不启用 TRUSTWORTHY

首先,这是针对 SQL Server 2016 的。如果我在 2017+ 上,我会使用sp_add_trusted_assembly. 在问这个问题之前只是想澄清一下。

如何在不使用 的情况下注册程序集System.DirectoryServices.AccountManagement.dllTRUSTWORTHY ON?我无法使用System.DirectoryServices.dll生成的非对称密钥使其工作。AccountManagement dll 的签名与System.DirectoryServices.dll不同。

我什至尝试从System.DirectoryServices.AccountManagement.dll创建一个单独的非对称密钥,但这会导致:

消息 15468,级别 16,状态 7,行 XXXXX
在生成非对称密钥期间出错。

这是我为尝试创建此程序集而编写的测试脚本。

USE master

IF DB_ID('CLR_Test') IS NULL BEGIN
    CREATE DATABASE CLR_Test
END
GO

USE [CLR_Test]
GO

EXEC sp_configure @configname=clr_enabled, @configvalue=1
GO
RECONFIGURE
GO

/*************************************************************************************/
-- DROP OBJECTS IF FOUND FIRST
/*************************************************************************************/

-- DROP System.DirectoryServices.AccountManagement
IF EXISTS(SELECT 1 FROM sys.assemblies WHERE name = 'System.DirectoryServices.AccountManagement') BEGIN 
    RAISERROR( 'DROP ASSEMBLY [System.DirectoryServices.AccountManagement]', 0, …
Run Code Online (Sandbox Code Playgroud)

security sql-server sql-clr active-directory sql-server-2016

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