标签: sql-server-2016

使用.net Core/EF Core在SQL Server 2016中的ASP MVC应用程序中进行列加密

我试图使用SQL Server 2016中的"始终加密"功能来加密某些列.我使用这篇文章作为指导,在SSDT中将列设置为加密.

那部分没问题,当我尝试从应用程序查询数据时出现错误.根据文档,我需要添加:

column encryption setting=enabled
Run Code Online (Sandbox Code Playgroud)

到我的连接字符串.实体框架核心似乎不支持此功能.我收到此错误:

不支持列加密设置=启用

我也尝试使用SqlConnectionStringBuilder构建字符串,并且没有添加该设置的功能.它确实出现在.NET 4.6中.

那么,是否有人知道使用Always Encrypted从.NET Core应用程序连接到SQL服务器实例的方法?

sql-server entity-framework-core sql-server-2016 asp.net-core always-encrypted

10
推荐指数
1
解决办法
2836
查看次数

为什么没有使用columnstore索引

我在SQL Server 2016 Enterprise Edition上的40m记录非内存优化表的所有列上都有一个非聚集列存储索引.

强制使用columnstore索引的查询将执行得更快,但优化器继续选择使用聚簇索引和其他非聚簇索引.我有很多可用的RAM,并且正在对维度模型使用适当的查询.

为什么优化器不会选择columnstoreindex?我怎样才能鼓励它的使用(不使用提示)?

以下是不使用columnstore的示例查询:

SELECT
  COUNT(*),
  SUM(TradeTurnover),
  SUM(TradeVolume)
FROM DWH.FactEquityTrade e
--with (INDEX(FactEquityTradeNonClusteredColumnStoreIndex))
JOIN DWH.DimDate d
  ON e.TradeDateId = d.DateId
 JOIN DWH.DimInstrument i
  ON i.instrumentid = e.instrumentid
WHERE d.DateId >= 20160201
AND i.instrumentid = 2
Run Code Online (Sandbox Code Playgroud)

没有提示需要7秒,提示需要几分之一秒.没有提示的查询计划在这里.带有提示的查询计划在这里.

列存储索引的create语句是:

CREATE NONCLUSTERED COLUMNSTORE INDEX [FactEquityTradeNonClusteredColumnStoreIndex] ON [DWH].[FactEquityTrade]
(
    [EquityTradeID],
    [InstrumentID],
    [TradingSysTransNo],
    [TradeDateID],
    [TradeTimeID],
    [TradeTimestamp],
    [UTCTradeTimeStamp],
    [PublishDateID],
    [PublishTimeID],
    [PublishedDateTime],
    [UTCPublishedDateTime],
    [DelayedTradeYN],
    [EquityTradeJunkID],
    [BrokerID],
    [TraderID],
    [CurrencyID],
    [TradePrice],
    [BidPrice],
    [OfferPrice],
    [TradeVolume],
    [TradeTurnover],
    [TradeModificationTypeID],
    [InColumnStore],
    [TradeFileID],
    [BatchID],
    [CancelBatchID]
) …
Run Code Online (Sandbox Code Playgroud)

sql-server indexing query-performance columnstore sql-server-2016

10
推荐指数
1
解决办法
1481
查看次数

数据分析任务 - 自定义配置文件请求

是否有任何选项可以为SSIS数据分析任务创建自定义配置文件请求?

目前,在SSIS数据分析任务下有5个标准配置文件请求:

  1. 列空比率配置文件请求
  2. 列统计信息配置请求
  3. 列长度​​分布配置文件请求
  4. 列值分布配置文件请求
  5. 候选人密钥概况请求

我需要添加另一个(自定义一个)来获取所有数值的摘要.

在此先感谢您的帮助.

sql-server ssis etl data-profiling sql-server-2016

10
推荐指数
1
解决办法
327
查看次数

数据库“ [DatabaseName]”已存在。选择其他数据库名称

我正在按照本指南说明使用Entity Framework核心的代码优先方法。迁移工作正常,直到某个时候我删除了.mdf文件。从那时起,执行Update-Database(以应用我的迁移)会引发以下错误: Database 'DatabaseName' already exists. Choose a different database name.

这个数据库到底在哪里?如何将其永久删除?

根据答案,我需要从Sql Server分离数据库,但现在不确定如何执行此操作。在Sql Server Management Studio中,如果执行sp_detach_db DatabaseName则抛出错误The database 'DatabaseName' does not exist. Supply a valid database name.

提前致谢。

更新 我看到,database already exists如果我在SQL Server Management Studio中附加了数据库并执行Update-Database命令,我也可以重现此错误。关闭Management Studio后,将应用迁移而不会出现此错误。我很困惑

entity-framework-core sql-server-2016 asp.net-core

9
推荐指数
3
解决办法
7085
查看次数

你如何在数组数组上使用OPENJSON

我有一个JSON结构,其中有Sections,由多个Renders组成,包含多个Fields.

如何在最低级别(字段)上执行1次OPENJSON调用以从中获取所有信息?

这是一个JSON示例:

Declare @layout NVARCHAR(MAX) = N'
    {
        "Sections": [
            {
                "SectionName":"Section1",
                "SectionOrder":1,
                "Renders":[
                    {
                        "RenderName":"Render1",
                        "RenderOrder":1,
                        "Fields":[
                            {
                                "FieldName":"Field1",
                                "FieldData":"Data1"
                            },
                            {
                                "FieldName":"Field2",
                                "FieldData":"Data2"
                            }
                        ]
                    },
                    {
                        "RenderName":"Render2",
                        "RenderOrder":2,
                        "Fields":[
                            {
                                "FieldName":"Field1",
                                "FieldData":"Data1"
                            },
                            {
                                "FieldName":"Field2",
                                "FieldData":"Data2"
                            }
                        ]
                    } 
                ]
            },
            {
                "SectionName":"Section2",
                "SectionOrder":2,
                "Renders":[
                    {
                        "RenderName":"Render1",
                        "RenderOrder":1,
                        "Fields":[
                            {
                                "FieldName":"Field1",
                                "FieldData":"Data1"
                            }
                        ]
                    },
                    {
                        "RenderName":"Render2",
                        "RenderOrder":2,
                        "Fields":[
                            {
                                "FieldName":"Field1",
                                "FieldData":"Data1"
                            },
                            {
                                "FieldName":"Field2",
                                "FieldData":"Data2"
                            }
                        ]
                    } 
                ]
            }
        ]
    }
'
Run Code Online (Sandbox Code Playgroud)

下面是嵌套OPENJSON调用代码的一些示例,它可以工作,但是非常复杂且无法动态生成,如何进行一级调用?

SELECT …
Run Code Online (Sandbox Code Playgroud)

t-sql json sql-server-2016

9
推荐指数
2
解决办法
3936
查看次数

避免系统版本表中的模式不匹配

寻找解决方法:

Error: SQL71609: System-versioned current and history tables do not have matching schemes. Mismatched column: 'XXXX'.
Run Code Online (Sandbox Code Playgroud)

尝试在SSDT中为Visual Studio 2015使用SQL 2016系统版本(时间)表时.

我已经定义了一个基本表:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] VARCHAR(50) NOT NULL,
    [SysStartTime] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    [SysEndTime] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
)
WITH (SYSTEM_VERSIONING=ON(HISTORY_TABLE=[history].[Example]))
GO
Run Code Online (Sandbox Code Playgroud)

(假设[history]在SSDT中正确创建了模式).这是第一次建立良好.

如果我以后做出改变:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] …
Run Code Online (Sandbox Code Playgroud)

sql-server temporal sql-server-data-tools visual-studio-2015 sql-server-2016

9
推荐指数
2
解决办法
2129
查看次数

向DB Diagram添加多个表时,获取"参数不正确"

使用SQL SERVER 2016,The parameter is incorrect在向DB Diagram添加多个表时获取异常.行为就好像只允许一个表限制一样.我已经尝试修复SQL SERVER 2016和SSMS.多次重新启动后,仍然无法向DB Diagram添加多个表.我的操作系统是Windows 10.

ssms sql-server-2016

9
推荐指数
0
解决办法
500
查看次数

如何搜索包含JSON数组的SQL列

我有一个SQL列,它有一个JSON数组:

{"names":["Joe","Fred","Sue"]}
Run Code Online (Sandbox Code Playgroud)

给定一个搜索字符串,我如何使用SQL在names数组中搜索匹配?我正在使用SQL 2016并查看了JSON_QUERY,但不知道如何在JSON数组上搜索匹配项.像下面这样的东西会很好.

SELECT *
FROM table
WHERE JSON_QUERY(column, '$.names') = 'Joe'
Run Code Online (Sandbox Code Playgroud)

sql t-sql arrays sql-server-2016 json-query

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

通过 SSMS 编辑 dtsx

我使用 SSMS 对应的向导创建并执行了一个 dtsx:

在此处输入图片说明 这是在现有表中导入平面文件。

最后我将“包”保存为 .dtsx 文件

现在我需要修改列映射并重新执行这个包。

有什么办法可以使用 SQL Server Management Studio 做到这一点吗?

我尝试打开文件,但它打开了这个对话框:

在此处输入图片说明

我无法再编辑映射的地方。

更新:

我知道“编辑”一个 dtsx 不是一件简单的事情,但是有没有理由不能使用已经预设的值再次运行向导?就像在最后一步打开向导并在前面的步骤中“返回”一样。毕竟这是现有的功能......

有什么技巧可以做到这一点吗?从命令行也许?这很适合我的需要。

sql-server ssis etl ssms sql-server-2016

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

DATETIME 类型是否包含时区信息?

我想在 MSSQL 数据库中专门使用 UTC 时间戳。当写入当前时间戳时,我可以使用类似的系统方法,GETDATEUTC并且我们已与供应商达成一致,从外部源发送的时间戳也将作为隐式 UTC 提供 - 但是当将这些写入数据库时​​,我是否需要告诉MSSQL这是一个 UTC 日期不知何故?或者我有责任知道我正在使用哪个时区?

sql-server sql-server-2016

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