我一直在(localdb)\ProjectsV13VS 2017安装中使用它,但是最近我在开发过程中需要访问一些SQL Server 2017功能,因此我也安装了SQL Server 2017 LocalDB(不幸的是,VS Installer的一部分仍未安装)。现在我有2016和2017 localdb并排安装:
如何连接到此2017 localdb实例?
通过SSMS连接,(localdb)\ProjectsV13并且(localdb)\MSSQLLocalDB仍然返回:
SELECT @@VERSION
Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) Oct 28 2016 18:17:30 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 16299: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)
(localdb)\ProjectsV14 似乎不存在(尝试连接时超时)。
我在SQL Server 2017中使用STRING_AGG函数。我想创建与相同的效果COUNT(DISTINCT <column>)。我试过了,STRING_AGG(DISTINCT <column>,',')但这不是合法的语法。
我想知道是否有T-SQL解决方法。这是我的样本:
WITH Sitings
AS
(
SELECT * FROM (VALUES
(1, 'Florida', 'Orlando', 'bird'),
(2, 'Florida', 'Orlando', 'dog'),
(3, 'Arizona', 'Phoenix', 'bird'),
(4, 'Arizona', 'Phoenix', 'dog'),
(5, 'Arizona', 'Phoenix', 'bird'),
(6, 'Arizona', 'Phoenix', 'bird'),
(7, 'Arizona', 'Phoenix', 'bird'),
(8, 'Arizona', 'Flagstaff', 'dog')
) F (ID, State, City, Siting)
)
SELECT State, City, COUNT(DISTINCT Siting) [# Of Types], STRING_AGG(Siting,',') Animals
FROM Sitings
GROUP BY State, City
Run Code Online (Sandbox Code Playgroud)
上面产生了以下结果:
+---------+-----------+--------------+-------------------------+
| State | City | …Run Code Online (Sandbox Code Playgroud) 我在MS SQL Server 2017中观察到了一些奇怪的行为.
+=在select中充当聚合器('连接所有行的值'),当右边是常量时.+=在select中,当右侧是列名时,则表示"只设置值" .(另外,这会改变其他列的聚合行为)所以我的问题是:
@c1结果只包含最后一行的值,即使+=使用了?@c2受到影响,通过改变+=- > =为@c1?BEGIN
DECLARE
@c1 NVARCHAR(MAX) = N'',
@c2 NVARCHAR(MAX) = N'';
SELECT
@c1 = constraint_name, -- version-1
@c2 += '+'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
ORDER BY 1 DESC
;
PRINT '@c1=' + @c1;
PRINT '@c2=' + @c2;
END
;
Run Code Online (Sandbox Code Playgroud)
版本1结果:
@c1 = fk_abcde
@c2 = ++++++++++++++++++++++++++++++++++++++++++
(`@c2` result is aggregation of many rows; …Run Code Online (Sandbox Code Playgroud) 我已经在 Ubuntu 16.04 上安装了 mssql。以下是sql server的详细信息。ms sql(14.0.3015.40-1)即SQL server 2017。
当我运行配置命令时#sudo /opt/mssql/bin/sqlservr-setup
出现错误sudo: /opt/mssql/bin/sqlservr-setup: command not found
我已经停止并重新启动但没有用。
当我通过命令检查状态时 #systemctl status mssql-server
我有
mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Fri 2018-02-02 16:15:29 IST; 4min 20s ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Process: 28050 ExecStart=/opt/mssql/bin/sqlservr (code=exited, status=200/CHDIR)
Main PID: 28050 (code=exited, status=200/CHDIR)
Feb 02 16:15:28 chetan-desktop systemd[1]: mssql-server.service: Unit entered failed state.
Feb 02 16:15:28 …Run Code Online (Sandbox Code Playgroud) database sql-server ubuntu-16.04 sql-server-2017 sql-server-linux
如果客户端连接到 SQL Server,并且使用证书来支持 TLS 加密,我如何获取有关该证书的信息?
\n理想情况下我想要所有细节,但我会很高兴
\nSSL_Self_Signed_FallbackSSL_Self_Signed_Fallback6640479c9cac2b7ca63c9708c71a9245b951b4c7显然我不能只看服务器上的配置;因为我正在尝试验证没有 MitM。
\n另外,我想验证是否使用了正确的证书(尤其是在 SQL Server 配置管理器中未选择使用任何证书时)。
\n无论哪种方式:我希望客户端能够验证证书。
\n我如何获取有关证书的信息。
\n认为:
\n无论哪个有帮助。
\n您可以监视网络流量,并查看原始 TLS 握手:
\n16 03 01 04 d0 02 00 00 51 03 01 5d a7 35 …Run Code Online (Sandbox Code Playgroud) 每个人。我一直在尝试使用 EntityFrameworkCore 开发简单的启动 AspNetCore 应用程序,以连接和使用 MS SQL 服务器数据库。并通过 Rider IDE、数据库客户端工具 (DBeaver) 和 dotnet 命令行界面 (dotnet ef) 管理所有这些。我正在使用数据库优先方法(在 mssql 服务器上创建数据库,用表填充它,然后基于表构建模型)。我的逐步行动:
1)为我在 Ubuntu 18.04 上工作的机器安装和设置 mssql 服务器。安装命令行工具“SQLCMD”。/// 指南链接 - https://docs.microsoft.com/en-gb/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15
2)本地连接到我的 MSSQLServer 实例。 sqlcmd -S localhost -U SA -P 'MyPasswd'
3) 使用 Transact-SQL 创建的数据库并安装 DB 客户端 (DBeaver) 来快速管理我现在和将来的数据库。
下一步,正如我所想的那样,是使用有关将我的 Web 应用程序连接到此处找到的数据库的教程https://blog.jetbrains.com/dotnet/2017/08/09/running-entity-framework-core-commands-骑手/和这里https://www.entityframeworktutorial.net/efcore/create-model-for-existing-database-in-ef-core.aspx
我的 ASP.NET Core 项目的包引用:
在输入 CLI 命令 dotnet ef dbcontext scaffold "Server=localhost;Database=WebAppDB;Integrated Security=true;" 后 Microsoft.EntityFrameworkCore.SqlServer -c RsvpContext(构建“RsvpContext”上下文以连接到我的数据库 WebAppDB。)
我看到我看到的:
Build started...
Build succeeded.
Microsoft.Data.SqlClient.SqlException …Run Code Online (Sandbox Code Playgroud) 我最近安装了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程序集编码为"受信任"?
我创建时态表以设置级别:
CREATE TABLE [#DesignLvl]
(
[DesignKey] INT,
[DesignLevel] INT
);
WITH RCTE AS
(
SELECT
*,
1 AS [Lvl]
FROM
[Design]
WHERE
[ParentDesignKey] IS NULL
UNION ALL
SELECT
[D].*,
[Lvl] + 1 AS [Lvl]
FROM
[dbo].[Design] AS [D]
INNER JOIN
[RCTE] AS [rc] ON [rc].[DesignKey] = [D].[ParentDesignKey]
)
INSERT INTO [#DesignLvl]
SELECT
[DesignKey], [Lvl]
FROM
[RCTE]
Run Code Online (Sandbox Code Playgroud)
创建后,在非常大的查询中将LEFT JOIN用作:
SELECT...
FROM..
LEFT JOIN [#DesignLvl] AS [dl] ON d.DesignKey = dl.DesignKey
WHERE ...
Run Code Online (Sandbox Code Playgroud)
该查询有效,但是性能下降并且查询现在太慢。有什么方法可以优化此表?
CTE执行计划
我尝试将CLUSTERED索引添加为:
CREATE TABLE [#DesignLvl]
(
[DesignKey] INT, …Run Code Online (Sandbox Code Playgroud) sql t-sql sql-server common-table-expression sql-server-2017
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) sql-server-2017 ×10
sql-server ×7
sql ×3
t-sql ×2
asp.net-mvc ×1
c# ×1
certificate ×1
database ×1
distinct ×1
ef-core-3.0 ×1
ef-core-8.0 ×1
encryption ×1
kerberos ×1
localdb ×1
reporting ×1
reportserver ×1
sqlclr ×1
ssl ×1
ssrs-2017 ×1
tsqlt ×1
ubuntu ×1
ubuntu-16.04 ×1