我最近安装了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程序集编码为"受信任"?
以下查询返回如下所示的结果:
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) 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) 在我做SSMS的时候
在文件中查找和替换
(默认按键CTRL+SHIFT+H)
编辑>查找和替换>替换文件
如果我将"查找范围"设置为"当前文档",然后进行更改并选择"全部替换"按钮,"查找范围"下拉列表更改以选择
所有开放文件
如何将Look In设置为我之前选择的内容? 我想保持它设置为当前文档 坦率地说这种行为非常烦人.
我需要将毫秒值85605304.3587转换为0d 18h 21m的值.不知道如何开始,有没有类似于SQL中的TimeSpan,就像在C#中一样?
假设我正在使用此示例中的图形数据库(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)
但是此语法不正确...我该如何查询?
我正在尝试使用"基本"安装类型安装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'.
我不确定它是否是错误的根本原因.
我有一个 SSIS 作业,在 SQL Server 2008 中运行良好,但在 SQL Server 2017 中不再运行。我收到的错误消息是:
无法从任务“电子邮件”的 XML 创建任务,请键入“Microsoft.Script.Task”,因为错误 0x80070057”参数不正确
请告知此问题的任何解决方案。谢谢
安装 SQL Server 2017 后,我找不到 Execute Package Utility (dtexecui)。也找不到来自 Microsoft 的任何独立安装程序来安装它。有人会指导我安装它以运行我的 SSIS 包吗?
sql-server-2017 ×10
sql-server ×7
sql ×3
c# ×2
dtexec ×1
ef-core-8.0 ×1
installation ×1
r ×1
sqlclr ×1
ssis ×1
ssms ×1
t-sql ×1
tsqlt ×1