标签: sql-server-2017

无法在SQL Server 2017中创建tSQLtCLR程序集

我最近安装了SQL Server 2017 Express和localdb(一般可用性).在尝试安装tSQLt框架时,我发现了SQL Server 2017中实现的新安全功能:"clr strict security"选项.这个新的安全功能似乎阻止了tSQLtCLR程序集的创建.SQL错误消息指出:

使用SAFE或EXTERNAL_ACCESS选项对程序集'tSQLtCLR'进行CREATE或ALTER ASSEMBLY失败,因为sp_configure的'clr strict security'选项设置为1. Microsoft建议您使用具有相应登录名的证书或非对称密钥对程序集进行签名UNSAFE ASSEMBLY许可.或者,您可以使用sp_add_trusted_assembly信任程序集.

我已经阅读了与sp_add_trusted_assembly过程相关的Microsoft技术文档,但它似乎假设您能够成功创建程序集.如果你不能首先创建它,那么如何将tSQLtCLR程序集编码为"受信任"?

sql-server automated-tests sqlclr tsqlt sql-server-2017

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

在SQL Server中使用STRING_AGG获取唯一值

以下查询返回如下所示的结果:

SELECT 
    ProjectID, newID.value
FROM 
    [dbo].[Data] WITH(NOLOCK)  
CROSS APPLY 
    STRING_SPLIT([bID],';') AS newID  
WHERE 
    newID.value IN ('O95833', 'Q96NY7-2') 
Run Code Online (Sandbox Code Playgroud)

结果:

ProjectID   value
---------------------
2           Q96NY7-2
2           O95833
2           O95833
2           Q96NY7-2
2           O95833
2           Q96NY7-2
4           Q96NY7-2
4           Q96NY7-2
Run Code Online (Sandbox Code Playgroud)

使用STRING_AGG以下查询中显示的新添加的功能(在SQL Server 2017中),我可以获取以下结果集。

SELECT 
    ProjectID,
    STRING_AGG( newID.value, ',') WITHIN GROUP (ORDER BY newID.value) AS 
NewField
FROM
    [dbo].[Data] WITH(NOLOCK)  
CROSS APPLY 
    STRING_SPLIT([bID],';') AS newID  
WHERE 
    newID.value IN ('O95833', 'Q96NY7-2')  
GROUP BY 
    ProjectID
ORDER BY 
    ProjectID
Run Code Online (Sandbox Code Playgroud)

结果:

ProjectID   NewField
-------------------------------------------------------------
2           O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2
4 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server string-aggregation sql-server-2017

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

Entity Framework Core 8Where IN 与Where IN OPENJSON

WHERE INEF Core 8 现在使用和 的组合将值内联到 where 语句中,OPENJSON而不是以前的WHERE IN(...).

文档中记录了此更改,所述原因如下:

此处值的内联是以不存在 SQL 注入攻击的机会的方式完成的。下面描述的使用 JSON 的更改完全与性能有关,与安全性无关。

不幸的是,OPENJSON我们 2017 年 SQL Server 实例的性能很差。

下面的查询由 EF Core 8 生成,运行时间为1.8 秒,产生近400,000 次读取

DECLARE @__scheduleTagIds_0 nvarchar(4000) = N'[5835,5970,6563,6564,6565,6645,6835,6850,7034,7127]';

SELECT  [s].[ScheduleTagId]
       ,[s].[MustStartProdBy]
FROM    [ScheduleTagMustStartBy] AS [s]
WHERE   [s].[ScheduleTagId] IN (
    SELECT  [s0].[value]
    FROM    OPENJSON(@__scheduleTagIds_0) WITH ([value] int '$') AS [s0]
)
Run Code Online (Sandbox Code Playgroud)

如果我重构查询以使用标准WHERE IN(...),执行时间将降至120 毫秒29,000 次读取

SELECT  [s].[ScheduleTagId]
       ,[s].[MustStartProdBy] …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core sql-server-2017 ef-core-8.0

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

如何保持SSMS查找和替换文件"查找"更改

在我做SSMS的时候

在文件中查找和替换

(默认按键CTRL+SHIFT+H)

编辑>查找和替换>替换文件

如果我将"查找范围"设置为"当前文档",然后进行更改并选择"全部替换"按钮,"查找范围"下拉列表更改以选择

所有开放文件

如何将Look In设置为我之前选择的内容? 我想保持它设置为当前文档 坦率地说这种行为非常烦人.

sql-server ssms sql-server-2016 sql-server-2017

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

SQL将毫秒转换为天,小时,分钟

我需要将毫秒值85605304.3587转换为0d 18h 21m的值.不知道如何开始,有没有类似于SQL中的TimeSpan,就像在C#中一样?

sql t-sql sql-server sql-server-2017

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

实体框架查询到SQL Server 2017图形数据库的语法

假设我正在使用此示例中的图形数据库(SQL Server 2017):

https://docs.microsoft.com/zh-cn/sql/relational-databases/graphs/sql-graph-sample

我有以下SQL查询:

-- Find Restaurants that John likes
SELECT Restaurant.name
FROM Person, likes, Restaurant
WHERE MATCH (Person-(likes)->Restaurant)
AND Person.name = 'John';
Run Code Online (Sandbox Code Playgroud)

我使用EF 6.1.3在C#中创建了一个模型,它会自动生成数据库中的所有类和所有内容(数据库中的EF Designer)。这一切都很好。我什至可以使用以下简单方法查询所有人:

public ICollection<People> ListPeople() => Entities.Peoples.ToList();
Run Code Online (Sandbox Code Playgroud)

现在,如果我们回到原始查询,我想在哪里找到John喜欢的餐厅...我将如何在Entity Framework中做到这一点?我需要使用LINQ查询还是可以仅调用实体?(大概我不能,因为表之间似乎没有任何物理关系,只能在边缘找到它们)

我在想类似的东西

 public ICollection<Restaurant> ListRestaurantsLikedByPerson(string personName)
        {
            var result = from restaurant in Entities.Restaurants, person in Entities.Peoples, likes in Entities.likess
                where match (person - likes -> restaurant)
                and person.name = personName;

            return result;
        }
Run Code Online (Sandbox Code Playgroud)

但是此语法不正确...我该如何查询?

c# entity-framework graph-databases sql-server-2017

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

在Windows 10上安装SQL Server 2017开发人员版时出现"糟糕"错误

我正在尝试使用"基本"安装类型安装SQL Server 2017 Developer Edition,但它给出了以下错误消息:

糟糕!

无法安装SQL Server(setup.exe).

在此输入图像描述

正在尝试安装的构建版本是 14.1710.3866.2

我已经尝试过多次运行安装程序,但每次都有相同的错误屏幕.还尝试使用管理权限启动安装程序,但没有运气.

有没有人知道这个神秘的错误信息以及如何克服它?它并没有指向我可以查看的任何日志文件,以便了解它在我的机器上发生的原因.我下载安装官方网站MS 这里.

更新:在@TheGameiswar的帮助下,我能够找到安装尝试的日志文件.只有我从命名文件中找到的相关内容Detail_Rules.txt如下:

(01)2017-11-17 14:37:43 Slp:媒体中不存在本地化版本和ENU帮助.chm文件.这可能意味着UI上没有适当的帮助文件.错误消息:媒体中缺少帮助.chm文件'C:\ SQLServer2017Media\RulesEng\1033_ENU_LP\x64\1033\help\s11ch_setup.chm'.

我不确定它是否是错误的根本原因.

sql-server installation sql-server-2017

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

由于错误 0x80070057“参数不正确。” SSIS作业运行失败

我有一个 SSIS 作业,在 SQL Server 2008 中运行良好,但在 SQL Server 2017 中不再运行。我收到的错误消息是:

无法从任务“电子邮件”的 XML 创建任务,请键入“Microsoft.Script.Task”,因为错误 0x80070057”参数不正确

请告知此问题的任何解决方案。谢谢

sql-server ssis sql-server-2008 sql-server-2017

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

安装 SQL Server 2017 后未安装执行包实用程序 (dtexecui)

安装 SQL Server 2017 后,我找不到 Execute Package Utility (dtexecui)。也找不到来自 Microsoft 的任何独立安装程序来安装它。有人会指导我安装它以运行我的 SSIS 包吗?

sql dtexec sql-server-2017

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

SQL Server 机器学习服务 r 版本 3.5

根据此链接,SQL Server 机器学习服务的最高 R 版本为 3.3。有谁知道什么时候可以升级到 3.5 或更高版本?

或者是我切换到 sql server 2019 的唯一选择?

谢谢。

sql-server r sql-server-2017 sql-server-2019

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