标签: sql-server-2017

如何使用REST API导出SSRS 2017报告

我已经设置了SSRS 2017.我需要使用他们的新REST API导出SSRS报告,我一直在查看API规范,但我找不到swagger规范中的方法来使用HTTP呈现/导出该报告客户.这个问题可能要求我正在寻找.

sql-server reporting reportserver sql-server-2017 ssrs-2017

9
推荐指数
1
解决办法
5245
查看次数

如何连接到SQL Server 2017 LocalDB?

我一直在(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 似乎不存在(尝试连接时超时)。

visual-studio localdb sql-server-2017

9
推荐指数
1
解决办法
9292
查看次数

在STRING_AGG中产生DISTINCT值

我在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)

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

9
推荐指数
4
解决办法
7455
查看次数

+ =在SELECT子句中; 常数vs列

我在MS SQL Server 2017中观察到了一些奇怪的行为.

  • +=在select中充当聚合器('连接所有行的值'),当右边是常量时.
  • +=在select中,当右侧是列名时,则表示"只设置值" .(另外,这会改变其他列的聚合行为)

所以我的问题是:

  1. 为什么@c1结果只包含最后一行的值,即使+=使用了?
  2. 为什么@c2受到影响,通过改变+=- > =@c1

版本1:

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)

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

9
推荐指数
1
解决办法
116
查看次数

Linux 上的 Microsoft SQL Server 数据库引擎启动失败

我已经在 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

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

SQL Server 客户端如何获取有关正在使用的 TLS 证书的信息?

如果客户端连接到 SQL Server,并且使用证书来支持 TLS 加密,我如何获取有关该证书的信息?

\n

理想情况下我想要所有细节,但我会很高兴

\n
    \n
  • 发行人: SSL_Self_Signed_Fallback
  • \n
  • 颁发给: SSL_Self_Signed_Fallback
  • \n
  • SHA1 指纹: 6640479c9cac2b7ca63c9708c71a9245b951b4c7
  • \n
\n

显然我不能只看服务器上的配置;因为我正在尝试验证没有 MitM。

\n

另外,我想验证是否使用了正确的证书(尤其是在 SQL Server 配置管理器中未选择使用任何证书时)。

\n

无论哪种方式:我希望客户端能够验证证书。

\n

我如何获取有关证书的信息。

\n

认为:

\n\n

无论哪个有帮助。

\n

奖励 - 解码网络流量

\n

您可以监视网络流量,并查看原始 TLS 握手:

\n
16 03 01 04 d0 02 00 00 51 03 01 5d a7 35 …
Run Code Online (Sandbox Code Playgroud)

sql-server encryption ssl certificate sql-server-2017

8
推荐指数
0
解决办法
3429
查看次数

如何解决在 Linux (Ubuntu 18.04) 中执行 EF Core 数据库脚手架时“无法使用 Kerberos 进行身份验证”的问题?有什么解决办法吗?

每个人。我一直在尝试使用 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 项目的包引用:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

在输入 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)

asp.net-mvc ubuntu kerberos sql-server-2017 ef-core-3.0

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

无法在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
查看次数

使用CTE优化时态表

我创建时态表以设置级别:

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

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

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
查看次数