标签: tsqlt

为什么我在家工作时会使用 tSQLt 获得 PREEMPTIVE_OS_AUTHORIZATIONOPS?

我有一个包含 tSQLt 单元测试的 SSDT 项目。

在家工作时,我总是发现发布此内容并运行所有测试(来自部署后脚本)是有问题的(针对 localdb 和 SQL Server 开发人员版)。

发布无限期挂起,我最终不得不杀死 Visual Studio。

等待类型是PREEMPTIVE_OS_AUTHORIZATIONOPS,等待这个(来自sys.dm_exec_sql_text)的语句的一个例子是

(@r BIT OUTPUT)
SELECT @r = CASE
              WHEN I.Version = I.ClrVersion THEN 1
              ELSE 0
            END
FROM   tSQLt.Info() AS I; 
Run Code Online (Sandbox Code Playgroud)

我也通过调用重现这个

SELECT tSQLt.Private::Info()
Run Code Online (Sandbox Code Playgroud)

这是一个简单的方法

public static SqlString Info()
{
  return (SqlString) Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我假设它正在尝试联系域控制器以建立我有一些权限或其他权限。我在其他 CLR 程序集上没有得到这个,因此怀疑这可能与 TSQLT 不是SAFE_ACCESS程序集有关(权限集是EXTERNAL_ACCESS)。

任何人都知道这里发生了什么以及我如何解决此问题并在与公司网络断开连接的情况下工作而不会遇到此问题?

sql-server wait-types sql-clr tsqlt

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

为什么 SQL Server 有时会估计加入空表会增加行数?

我最近遇到一个问题,tSQLt测试需要很长时间才能运行。

所测试的过程正在执行 38 个表 (!) 连接(具有 37 个伪造的表和一个表值参数)。

只有两个伪造的表和 TVP 插入了任何行

编译时间非常慢。

显示跟踪标志 8675

End of simplification, time: 0.002 net: 0.002 total: 0 net: 0.002
end exploration, tasks: 549 no total cost time: 0.013 net: 0.013 total: 0 net: 0.015
end search(0),  cost: 13372.9 tasks: 3517 time: 0.012 net: 0.012 total: 0 net: 0.028
end exploration, tasks: 3983 Cost = 13372.9 time: 0 net: 0 total: 0 net: 0.028
end search(1),  cost: 6706.79 tasks: 10187 time: 0.024 net: …
Run Code Online (Sandbox Code Playgroud)

performance sql-server execution-plan tsqlt

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

某些 DDL 查询的 tSQLt 测试问题

我是一名 SQL Server DBA。为了自动执行一些日常任务,我需要编写存储过程。在没有测试的情况下创建功能对我来说没有意义。为了创建和运行我的测试,我使用了 tSQLt 框架。

我必须在测试期间创建一个数据库。多语句事务内不允许“CREATE DATABASE”,但所有测试都会在 tSQLt Framework 内的事务内自动运行。

当然,我可以在运行测试之前手动设置测试数据库,但测试不能依赖于执行它的环境。

应该如何处理这个问题?

sql-server t-sql tsqlt

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