当我尝试删除内存优化表时,出现此错误。我使用的是 sql server 2016 sp1
内存优化表不支持 DDL 语句 CREATE、ALTER 和 DROP 上的数据库和服务器触发器。
我已经放弃了 sec 策略和第二个索引。我不能删除 spidfilter,因为你必须有 1 个 MOT 索引。只是想看看这是否有所作为。它没。
代码如下:
create table dbo.MOT_tmpTableName
(
Col1 int,
Col2 int,
Col3 smalldatetime,
Col4 smalldatetime,
Col5 varchar(25),
Col6 date,
Col7 smallint,
Col8 smallint,
Col9 smallint,
Col10 smallint,
SpidFilter smallint not null DEFAULT (@@spid),
index nIX_SpidFilter nonclustered (SpidFilter),
index nIX_Col1_Col2_Col3 nonclustered (Col1, Col2, Col3),
CONSTRAINT CHK_MOT_tmpTableName_SpidFilter
CHECK ( SpidFilter = @@spid ),
)
WITH
(MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);
go
create security …Run Code Online (Sandbox Code Playgroud) 我有一个带有时态表的SQL Server 2016数据库.一个时态表称为公司.我试图查询它以获取当前记录和所有历史记录.我首先尝试了以下查询:
select *
from Company c
FOR SYSTEM_TIME all
Run Code Online (Sandbox Code Playgroud)
并得到以下错误: 'FOR'附近的语法不正确.
但是,如果我在没有别名的情况下尝试它,它可以正常工作:
select *
from Company
FOR SYSTEM_TIME all
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于此的文档 - 它是合法约束,已知问题还是其他什么?
我刚刚开始在 SQL Server 2016 中使用查询数据存储,它确实非常有用。我遇到的问题是,服务器上有许多服务正在监视服务代理队列,因此它们的 WAITFOR 语句始终在报告中显示为运行时间最长的查询。这本身不是问题,但它们运行的时间太长,以至于扭曲了报告上的持续时间轴,使得所有其他查询几乎不可见。
有什么方法可以让查询存储忽略查询,这样它就不会显示在报告中吗?
执行几个 SQL 语句后总是出现以下错误。
我在用
var sql = require("mssql");
Run Code Online (Sandbox Code Playgroud)
(节点:12240)[DEP0064] 弃用警告:tls.createSecurePair() 已弃用。请改用 tls.Socket。warning.js:18(节点:12240)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):ConnectionError:无法连接到Server-100:15000ms内未定义 warning.js:18(节点:12240)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。将来,未处理的 Promise 拒绝将会以非零退出代码终止 Node.js 进程。warning.js:18(节点:12240)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:4):ConnectionError:无法连接到Server-100:15000ms内未定义 warning.js:18
ConnectionError: Failed to connect to server-100:undefined in 15000ms
at Connection.tedious.once.err (d:\API\node_modules\mssql\lib\tedious.js:216:17)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at Connection.emit (events.js:210:7)
at Connection.connectTimeout (d:\API\node_modules\tedious\lib\connection.js:634:12)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
Run Code Online (Sandbox Code Playgroud)
以下是代码:
module.exports = function (data) {
return new Promise(function (resolve, reject) {
var database = new sql.ConnectionPool({
user: 'sa',
password: 'password',
server: 'Server-100',
database: 'SQLDB',
options: {
encrypt: true, …Run Code Online (Sandbox Code Playgroud) 我将加密现有表中的几个字段。基本上,将使用以下加密技术:
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'sm_long_password@'
GO
CREATE CERTIFICATE CERT_01
WITH SUBJECT = 'CERT_01'
GO
CREATE SYMMETRIC KEY SK_01
WITH ALGORITHM = AES_256 ENCRYPTION
BY CERTIFICATE CERT_01
GO
OPEN SYMMETRIC KEY SK_01 DECRYPTION
BY CERTIFICATE CERT_01
SELECT ENCRYPTBYKEY(KEY_GUID('SK_01'), 'test')
CLOSE SYMMETRIC KEY SK_01
DROP SYMMETRIC KEY SK_01
DROP CERTIFICATE CERT_01
DROP MASTER KEY
Run Code Online (Sandbox Code Playgroud)
ENCRYPTBYKEY返回的最大varbinary大小为 8,000 字节。知道要加密的表字段(例如:nvarchar(128)、varchar(31)、bigint),如何定义新varbinary类型长度?
启用查询存储后,如何查找执行查询的人。例如,在跟踪收集的情况下,TRC 文件将获取主机名和程序详细信息以供查询,而在扩展事件的情况下,我们有 XEL 文件将获取主机名和程序详细信息。我们尝试了代码
SELECT des.program_name,
des.host_name,
*
FROM sys.query_store_query_text qt -- Query Text
JOIN sys.query_store_query q ON qt.query_text_id = q.query_id -- Query Data
JOIN sys.query_store_plan qp on qp.query_id = q.query_id -- Query Plan
join sys.dm_exec_requests der on der.query_hash = q.query_hash -- Get session id for query
join sys.dm_exec_sessions des on des.session_id = der.session_id -- Session Info
order by q.last_execution_time desc
Run Code Online (Sandbox Code Playgroud)
下面的 DMV 返回查询哈希 (query_hash) 的空值,因此上面的查询没有数据
select * from sys.dm_exec_requests der
select * from sys.dm_exec_sessions des
Run Code Online (Sandbox Code Playgroud) sql-server performance monitoring sql-server-2016 sql-query-store
如何将以下结果变为黄色?
我想找到上一年的最高分(不包括当前日期)和Name1和Parent1的分区
我已经尝试了以下没有给出所需结果的内容,它只返回正确分区的max,但是在所有日期之间.
select
[VDate]
,[Name1]
,[Parent1]
,[Score]
,max(case when [VDate] > dateadd(year, -1, [VDate]) then [Score] else null end) over (partition by [Name1], [Parent1]) AS MaxScoreInPreviousLast12Months
from [dbo].[Control]
Run Code Online (Sandbox Code Playgroud)
表数据:
CREATE TABLE Control
([VDate] datetime, [Name1] varchar(10), [Parent1] varchar(10), [Score] int);
INSERT INTO Control ([VDate], [Name1], [Parent1], [Score])
VALUES
('2018-08-01 00:00:00', 'Name1', 'Parent1', 80),
('2018-07-01 00:00:00', 'Name1', 'Parent1', 85),
('2018-06-01 00:00:00', 'Name1', 'Parent1', 90),
('2017-09-01 00:00:00', 'Name1', 'Parent1', 100),
('2017-08-01 00:00:00', 'Name1', 'Parent1', 95),
('2017-07-01 00:00:00', 'Name1', 'Parent1', 70),
('2018-08-01 …Run Code Online (Sandbox Code Playgroud) I am trying to do the following (pseudocode since it doesn't compile):
declare showListedOrSold int = 1 -- get value from config table
select *
from table
where CASE WHEN @showListedOrSold = 0 THEN id IN (1, 2, 5, 6, 10, 11)
WHEN @showListedOrSold = 1 THEN id IN (1, 5, 6, 10, 11)
WHEN @showListedOrSold = 2 THEN id IN (2)
END
Run Code Online (Sandbox Code Playgroud)
Basically depending on value of showListedOrSold, it should bring back certain id values.
The statement is …
在加盟时,我得到意想不到的结果DATETIME2(3)和DATETIME与PK列,在SQL Server 2016年
我有下表:
CREATE TABLE DATETIME_TEST
(
[DATETIME] DATETIME NOT NULL,
[DATETIME2_3] DATETIME2(3)
);
ALTER TABLE DATETIME_TEST
ADD CONSTRAINT PK_DATETIME_TEST PRIMARY KEY ([DATETIME]);
INSERT INTO DATETIME_TEST ([DATETIME], [DATETIME2_3])
VALUES ('20020202 02:02:02.000', '20020202 02:02:02.000'),
('20020202 02:02:02.003', '20020202 02:02:02.003'),
('20020202 02:02:02.007', '20020202 02:02:02.007'),
('2019-04-28 07:23:29.447', '2019-04-28 07:23:29.447');
SELECT *
FROM DATETIME_TEST
WHERE CONVERT(DATETIME2(3), [DATETIME]) = [DATETIME2_3]
Run Code Online (Sandbox Code Playgroud)
结果 :
DATETIME DATETIME2_3
-------------------------------------------------
2002-02-02 02:02:02.000 2002-02-02 02:02:02.000
2002-02-02 02:02:02.003 2002-02-02 02:02:02.003
2002-02-02 02:02:02.007 2002-02-02 02:02:02.007
2019-04-28 07:23:29.447 2019-04-28 07:23:29.447 …Run Code Online (Sandbox Code Playgroud) CREATE TABLE #A (UpperLimit NUMERIC(4))
CREATE TABLE #B (Id NUMERIC(4), Amount NUMERIC(4))
INSERT INTO #A VALUES
(1000), (2000), (3000)
INSERT INTO #B VALUES
(1, 3100),
(2, 1900),
(3, 1800),
(4, 1700),
(5, 900),
(6, 800)
Run Code Online (Sandbox Code Playgroud)
给定这两个表,我想将表 A 连接到 B ON B.Amount < A.UpperLimit,但表 B 中的每条记录只能使用一次,因此所需的输出将是:
我可以通过将表 B 的记录放入临时表中,将光标悬停在表 A 上获取顶部记录 < UpperLimit 并从临时表或其他一些编程解决方案中删除该记录来轻松地做到这一点,但我想避免这种情况,我非常确定这可以通过“正常”(递归 CTE?分区?)查询来完成。
sql-server-2016 ×10
sql-server ×7
sql ×4
t-sql ×3
datetime ×1
datetime2 ×1
encryption ×1
monitoring ×1
node-mssql ×1
node.js ×1
performance ×1
sqldatatypes ×1
tedious ×1