我试图使用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
我在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
是否有任何选项可以为SSIS数据分析任务创建自定义配置文件请求?
目前,在SSIS数据分析任务下有5个标准配置文件请求:
我需要添加另一个(自定义一个)来获取所有数值的摘要.
在此先感谢您的帮助.
我正在按照本指南说明使用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后,将应用迁移而不会出现此错误。我很困惑
我有一个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) 寻找解决方法:
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
使用SQL SERVER 2016,The parameter is incorrect在向DB Diagram添加多个表时获取异常.行为就好像只允许一个表限制一样.我已经尝试修复SQL SERVER 2016和SSMS.多次重新启动后,仍然无法向DB Diagram添加多个表.我的操作系统是Windows 10.
我有一个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) 我使用 SSMS 对应的向导创建并执行了一个 dtsx:
最后我将“包”保存为 .dtsx 文件
现在我需要修改列映射并重新执行这个包。
有什么办法可以使用 SQL Server Management Studio 做到这一点吗?
我尝试打开文件,但它打开了这个对话框:
我无法再编辑映射的地方。
更新:
我知道“编辑”一个 dtsx 不是一件简单的事情,但是有没有理由不能使用已经预设的值再次运行向导?就像在最后一步打开向导并在前面的步骤中“返回”一样。毕竟这是现有的功能......
有什么技巧可以做到这一点吗?从命令行也许?这很适合我的需要。
我想在 MSSQL 数据库中专门使用 UTC 时间戳。当写入当前时间戳时,我可以使用类似的系统方法,GETDATEUTC并且我们已与供应商达成一致,从外部源发送的时间戳也将作为隐式 UTC 提供 - 但是当将这些写入数据库时,我是否需要告诉MSSQL这是一个 UTC 日期不知何故?或者我有责任知道我正在使用哪个时区?
sql-server-2016 ×10
sql-server ×6
asp.net-core ×2
etl ×2
ssis ×2
ssms ×2
t-sql ×2
arrays ×1
columnstore ×1
indexing ×1
json ×1
json-query ×1
sql ×1
temporal ×1